二、Core授权-2 之.net core 基于Jwt实现Token令牌(策略)
2021-05-06 08:28
标签:年龄 官方文档 ide 不同的 方式 策略 token cee policy Authorization其目标就是验证Http请求能否通过验证。ASP.Net Core提供了很多种Authorization方式,详细可以参考 微软官方文档。在这里只详细介绍三种方式: Policy Middleware Custom Attribute 先定义一个IAuthorizationRequirement类来定义策略的要求,以下例子支持传递一个age参数。 然后定义策略要求的Handler,当提供的Controller被请求时先根据请求的Http报文来决定是否可以通过验证。 还需要在启动时,在services里注册定义的策略和对应的Handler 最后在相应的Controller前加上Authroize特性 二、Core授权-2 之.net core 基于Jwt实现Token令牌(策略) 标签:年龄 官方文档 ide 不同的 方式 策略 token cee policy 原文地址:https://www.cnblogs.com/fger/p/12100961.html1、Policy : 策略授权
public class AdultPolicyRequirement : IAuthorizationRequirement
{
public int Age { get; }
public AdultPolicyRequirement(int age)
{
//年龄限制
this.Age = age;
}
}
public class AdultAuthorizationHandler : AuthorizationHandler
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AdultPolicyRequirement requirement)
{
//获取当前http请求的context对象
var mvcContext = context.Resource as AuthorizationFilterContext;
//以下代码都不是必须的,只是展示一些使用方法,你可以选择使用
......
//
var age = mvcContext.HttpContext.Request.Query.FirstOrDefault(u => u.Key == "age");
if (age.Value.Count 0|| Convert.ToInt16(age.Value[0]) requirement.Age)
{
context.Fail();
}
else
{
//通过验证,这句代码必须要有
context.Succeed(requirement);
}
return Task.CompletedTask;
}
}
//添加二种认证策略,一种以12岁为界限,一种是18岁
services.AddAuthorization(options =>
{
options.AddPolicy("Adult1", policy =>
policy.Requirements.Add(new AdultPolicyRequirement(12)));
options.AddPolicy("Adult2", policy =>
policy.Requirements.Add(new AdultPolicyRequirement(18)));
});
//添加策略验证handler
services.AddSingleton();
[Authorize("Adult1")]
。总体上Policy这种方式比较简单,但是也有不灵活的地方,不同的策略要求都需要提前在services里注册。
上一篇:websocket在vue中使用
下一篇:多个文件上传
文章标题:二、Core授权-2 之.net core 基于Jwt实现Token令牌(策略)
文章链接:http://soscw.com/index.php/essay/83129.html