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 授權的時候 看看這個里面又沒有這個值 並且有么有權限
授權源碼