ASP.NET Core 授权机制是如何工作的?
ASP.NET Core 授权详解
一、什么是授权(Authorization)?
在ASP.NET Core中,授权是控制对应用资源访问的过程,它决定了哪些用户或用户组可以访问特定的资源或执行特定的操作,授权通常与身份验证(Authentication)一起使用,身份验证是验证用户身份的过程,而授权则是确定经过身份验证的用户是否有权访问某个资源。
二、授权类型
简单授权
通过向控制器、操作或Razor Page应用[Authorize]
属性,可限制为仅允许经过身份验证的用户访问该组件。
[Authorize] public IActionResult Info() { return View(); }
基于角色的授权
创建标识时,它可能属于一个或多个角色,Tracy可能属于Admin和User角色,而Scott只属于User角色,如何创建和管理这些角色取决于授权过程的后备存储。
[Authorize(Roles ="admin,user")] public IActionResult Info() { return View(); }
基于策略的授权
创建标识后,可为其分配一个或多个由受信任方颁发的声明,声明是一个名称值对,表示使用者是什么,而不是使用者可以做什么。
配置策略:
builder.Services.AddAuthorization(options => { options.AddPolicy("AdminPolicy", policyBuilder => { policyBuilder.RequireRole("admin"); }); });
使用授权:
[Authorize(Policy = "AdminPolicy")] public IActionResult Info() { return View(); }
基于自定义策略的授权
在底层,基于角色的授权和基于声明的授权均使用要求、要求处理程序和预配置的策略,这些构建基块支持代码中的授权评估的表达式,其结果为一个更丰富、可重用且可测试的授权结构。
配置策略:
builder.Services.AddAuthorization(options => { options.AddPolicy("PermissionPolicy", policyBuilder => { policyBuilder.Requirements.Add(new PermissionRequirement()); }); });
配置授权处理程序:
public class PermissionRequirement : IAuthorizationRequirement { } public class PermissionHandler : IAuthorizationHandler { public Task HandleRequirementAsync(AuthorizationHandlerContext context, PermissionRequirement requirement) { // 自定义授权逻辑 return Task.CompletedTask; } }
三、授权原理
在ASP.NET Core中,默认的身份验证中间件是AuthenticationMiddleware
,它负责处理身份验证逻辑,当用户访问需要授权的资源时,系统会根据用户的标识和角色信息来判断是否允许访问,如果用户未经过身份验证或不具备相应的权限,则会被拒绝访问。
四、归纳
ASP.NET Core提供了灵活而强大的授权机制,包括简单授权、基于角色的授权、基于策略的授权以及自定义策略授权,通过合理地配置和使用这些机制,可以有效地保护应用资源的安全。
以上内容就是解答有关“asp.net core 授权详解”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。