[Asp.Net Core]NET5策略鉴权

Posted 厦门德仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Asp.Net Core]NET5策略鉴权相关的知识,希望对你有一定的参考价值。

之前的角色授权是在代码中把角色定义死了;更希望能够自己来完成校验逻辑;

第一步:增加CustomAuthorizationHandler-----专用做检验逻辑的; 要求继承自

AuthorizationHandler<> 泛型抽象类;

    public class CustomAuthorizationHandler :AuthorizationHandler<CustomAuthorizationRequirement>
    
        public CustomAuthorizationHandler() 
        

        
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomAuthorizationRequirement requirement)
        
            if (requirement.Name == "Policy01")
            
                ///策略1的逻辑
            
            if (requirement.Name == "Policy02")
            
                ///策略1的逻辑
            
            if (true)
            

            

            //在这里可以自己定义自己的规则
            
                //其实这里可以去数据库里面去做一些查询,然后根据用户的信息,做计算;如果符合就context.Succeed(requirement); 
                //否则就Task.CompletedTask; 
            
            //context.User 鉴权成功(登录成功以后),用户的信息; 
            var role = context.User.FindFirst(c => c.Value.Contains("admin"));
            if (role != null)
            
                context.Succeed(requirement); //验证通过了

            
            return Task.CompletedTask; //验证不同过
        
    

增加一个CustomAuthorizationRequirement,要求实现接口:IAuthorizationRequirement

    public class CustomAuthorizationRequirement: IAuthorizationRequirement
    
        public CustomAuthorizationRequirement(string policyname)
        
            this.Name = policyname;
        

        public string Name  get; set; 
    

第二步:让自定义逻辑生效:在ConfigureServices方法中注册进来

services.AddSingleton<IAuthorizationHandler, CustomAuthorizationHandler>(); 

第三步:支持多种策略 例:

 services.AddAuthorization(options =>
           
               options.AddPolicy("customPolicy", polic =>
               
                   polic.AddRequirements(new CustomAuthorizationRequirement("Policy01"));
               );
           );

以上是关于[Asp.Net Core]NET5策略鉴权的主要内容,如果未能解决你的问题,请参考以下文章

[Asp.Net Core]鉴权授权

ASP.NET 5 改名 ASP.NET Core 1.0

[Asp.Net Core]Autofac整合.NET5 MVC

[Asp.Net Core]Autofac整合.NET5 MVC

[Asp.Net Core]NET5_Razor扩展01

[Asp.Net Core]NET5_Razor扩展01