我之前问过类似的问题,在其他人的帮助下我取得了一些进展,但仍然不确定我在这里做错或错过了什么。
我的应用程序很简单:域用户经过身份验证。经过身份验证的用户(作者)创建一个请求,保存在数据库中。其他经过身份验证的用户只能查看该请求。作者和管理员用户可以编辑/删除请求。
这是我遵循的示例之一: 不同角色的不同 API 功能
另一个 PoliciesAuthApp:https://github.com/aspnet/Docs/tree/master/aspnetcore/security/authorization/policies/samples/PoliciesAuthApp1 我不确定这里如何使用/注册/调用 PermissionHandler 。
这是我的代码:
启动.cs
// Add Authentication
// Global filter
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireRole("Role - Domain Users")
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
// Add Authorization Handlers
services.AddAuthorization(options =>
{
options.AddPolicy("EditPolicy", policy => policy.Requirements.Add(new EditRequirement()));
});
services.AddSingleton<IAuthorizationHandler, PermissionHandler>();
Run Code Online (Sandbox Code Playgroud)
编辑需求.cs
public class EditRequirement : IAuthorizationRequirement
{
}
Run Code Online (Sandbox Code Playgroud)
PermissionHandler.cs
public class PermissionHandler : IAuthorizationHandler
{
public Task HandleAsync(AuthorizationHandlerContext context)
{
var pendingRequirements = context.PendingRequirements.ToList();
foreach (var requirement in …Run Code Online (Sandbox Code Playgroud) asp.net-core-mvc .net-core asp.net-core .net-core-authorization
假设我使用以下内容:
services.AddIdentity<User, UserRole>()
.AddEntityFrameworkStores<AppDbContext>();
Run Code Online (Sandbox Code Playgroud)
设置的认证方案名称是什么?我在任何文档中都找不到。我试图与名称寻找类IdentityAuthenticationDefaults和IdentityDefaults却一无所获。我尝试过“ Cookies”,但未设置为此。该应用程序运行良好,因此肯定设置了一些方案名称。
c# asp.net-identity asp.net-core asp.net-core-identity .net-core-authorization