当前位置:首页 > Web开发 > 正文

以下例子支持传递一个age参数

2024-03-31 Web开发

Authorization其方针就是验证Http请求能否通过验证。ASP.Net Core供给了很多种Authorization方法,详细可以参考 微软官方文档。在这里只详细介绍三种方法:

Policy

Middleware

Custom Attribute

1、Policy : 计谋授权

先界说一个IAuthorizationRequirement类来界说计谋的要求,以下例子撑持通报一个age参数。

public class AdultPolicyRequirement : IAuthorizationRequirement { public int Age { get; } public AdultPolicyRequirement(int age) { //春秋限制 this.Age = age; } }

然后界说计谋要求的Handler,当供给的Controller被请求时先按照请求的Http报文来决定是否可以通过验证。

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; } }

还需要在启动时,在services里注册界说的计谋和对应的Handler

//添加二种认证计谋,一种以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();

最后在相应的Controller前加上Authroize特性 [Authorize("Adult1")]。总体上Policy这种方法对照简单,但是也有不灵活的处所,差此外计谋要求都需要提前在services里注册。

二、Core授权-2 之.net core 基于Jwt实现Token令牌(计谋)

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33033.html