封装JWT - 生成 jwt 和解析 jwt

发布时间 2023-11-05 09:52:58作者: 流浪のwolf

1. ASP.NET Core 身份验证和授权验证的功能由Authentication,Authorization中间件提供 :app.UseAuthentication(),app.UseAuthorization()。

2. 控制器类上标注[Authorzie]的控制器则所有的操作方法都会被进行身份验证和授权验证,对于对标注了[Authorize]的控制器类,如果某个方法不想被任何验证,可以在操作方法上添加 [AllowAnonymous];

ps:不标注Authorzie的可以随意访问 ;

3. ASP.NET Core 会按照HTTP协议的规范,从Authorization中取出来令牌 token,并且进行校验,解析结果填充到User属性中,这一切都是ASP.NET Core 完成的, 不需要开发人员自己写代码,但是出现 401 错误的报错信息很难排查;

4. 控制方法不只是先登录由了token 还要请求是管理员登录才能调用的接口,即普通用户访问 403 没有权限访问这个接口,

方案:添加 new Claim 的时候架上 name 为 Role value 是 admin ;claim.Add(new Claim(ClaimTypes.Roles, "admin"));  然后在方法上添加 [Authorize(Roles = 'admin')];   [ RBAC ]