UseAuthentication 就是鉴权 找出解析请求携带的信息
UseAuthorization 授权 权限检查,看看有没有权限
我们先来同步几个知识。
policy 是策略 满足什么条件 不可以叠加
roles 是角色 特殊的policy 也是规则只是微软封装好了的特殊策略。 roles 可以多个叠加(roles=(user,admin))
authenticationSchemes 用户信息来源,比如他是基于cookies 还是jwt 的 .可以多schemes
1多个Scheme是可以共存的
2不标记或者标记默认Scheme走的都是默认鉴权
3也可以通过标记指定Scheme去鉴权
4声明多个Scheme信息都保存Context.User
1多个Authorize声明,是需要叠加满足,才能访问
2单个的Authorize声明,Policy和Role需要同时满足,才能访问
3 单个的Authorize声明,用户信息来源以AuthenticationSchemes声明为准(没有则用默认,有多个则可以共享用户信息)
4多个Role可以写在一起,满足一个就行
5多个Policy,如果要同时满足,就分成多个Authorize声明,如果满足一个就行,则写成一个DRequiredment
AddUseAuthorization()默认就有了 是在addControllers() 里面的包含的。
通过源码我们不难看到 UseAuthentication 就是在往context.user 里面装赋值。 在UseAuthorization 授权的时候 看看这个里面又没有这个值 并且有么有权限
授权源码