[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]Autofac整合.NET5 MVC