ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 18. 基於Claim和Policy的受權 下 - 自定義Policy


在加一個策略,要求cliam的值必須是123

第二個參數的類型


可變參數 ,能夠是這三種類型

變成一個集合也能夠

策略內置的幾種方式

html

自定義


RequireAssetion的參數是個Func,Func能夠理解爲一個匿名方法,匿名方法有個參數叫作Conext,全名叫作

全名叫作AuthorizationHanlderContext

p判斷當前用戶是否有個Edit Albums的cliam。若是有就返回true


上面和下面道具是同樣的 下面的能夠自定義寫一個代碼進行更復雜的裸機判斷

可變參數,手寫一些類,讓類實現這個接口。參數裏面能夠加上自定義的requirment類











https://www.cnblogs.com/cgzl/p/9282059.html

6分29秒


 測試


繼承自:IAuthorizationRequirement。
屬性就是要暴露給外面使用

讓這個郵箱以126.com爲結尾的郵箱


Requirement有了,怎麼怎麼處理呢?須要一個handler
這裏加多個自定義的Requirement

新建類EmailHandler

實現接口:AuthorizationHandler泛型的類型就是 EmailHandler 

查看類型是Email 的

把類別單獨獨立出來



若是知足要求了就返回成功,不然就是啥也沒幹。返回的不是失敗,是啥也沒幹
ui

註冊這個Handler



再作一個無參的Requirement。意思是要找合格的用戶,具體怎麼合格要看handle了

建立handler,能夠編輯專輯的用戶就是合格的用戶



爭對這個requirement再寫一個handler

註冊一個requirement和兩個handler



如今這個策略裏面有兩個requirement,看看是兩個都知足呢仍是知足一個就能夠

給AlbumController加上屬性

能夠加多個測流,不過這裏我就先添加一個策略作測試

這一個策略裏面有兩個Requirement,看看最終是知足一個仍是兩個都要知足


咱們這個Email的Requirement裏面判斷是要Cliam帶Email的 當前裏面的用戶應該是都不知足的

可是確定有用戶知足第二個要求


測試下這個用戶 有Editg Albums這個Cliam

管理員角色下有這兩個用戶

這三個用戶都知足第二個Requirement的其中的一個handler。可是沒有人知足126郵箱的handler。雖然有126郵箱可是沒放在Claim裏面

這個用戶應該有權限的 ,。可是點進去以後,提示不行

也就是策略裏面的這兩條必需要同時知足,如今把上面Email的註釋掉

此次能夠訪問了

這個用戶知足Edit Albums這個要求

被拒絕了

這裏加個字母s




 3d

相關文章
相關標籤/搜索