【WCF】授權策略詳解

 

IAuthorizationPolicy 的 Evaluate 方法

由于IAuthorizationPolicy接口派生自IAuthorizationComponent接口,兩個接口加起來,我們的自定義類必須實現(xiàn)以下三個成員:

1、Id——這個屬性是字符串值,只讀。它表示一個唯一值,以區(qū)別于其他授權相關的組件類,對于這個屬性,最好的辦法就是返回一個GUID值,這樣就可以保證唯一性了。

2、Issuer——一個聲明集,即ClaimSet,它表示該授權策略的發(fā)布者。通常這個屬性可以直接返回System或Windows,這兩個值都是ClaimSet類的靜態(tài)成員。這樣返回比較簡單,你如果不希望使用系統(tǒng)默認聲明集,也可以自己組裝一個,一個聲明集里面包含N個Claim對象,一個Claim表示一個聲明。聲明這玩意兒怎么解釋呢。你就把它理解為一個符號吧,這種符號由type、resource,right三元素組成,type是字符串,可以使用標準的類型,這些標準由System.IdentityModel.Claims.ClaimTypes 類的靜態(tài)屬性公開,你可以直接用,比如URI,E-mail,Name、國家(Country)、DNS等。其實你看到了,聲明類型有點像聯(lián)系人資料的字段;除了標準值,你也可以自己定義值,反正是字符串,你可以隨便,比如city表示城市,age表示年齡,RP表示人品值,等等。right是權限,System.IdentityModel.Claims.Rights類的靜態(tài)屬性公開兩個標準值,同樣,它也是字符串,所以你也可以定義非標準的值,比如delete、add、new、save等等,反正是個字符串就行。而resource的數據類型為Object,即你可以引用任意值,但最好是可以序列化的實例,畢竟它最后是變成XML的,resource是附加內容,可選。

3、Evaluate方法——這個是核心,在這個方法里面你要對訪問者進行評估??蛻舳私涍^服務的身份驗證后,一般會產生一個Identity對象,這個標識是存放到一個字典數據中的,這個后面會給大伙說。注意這個方法返回的是布爾值,如果返回false,那么,一旦授權上下文發(fā)生變化,比如添加了安全實體、其他標識,或者其他的授權策略也進行評估時,都會觸發(fā)這個方法被調用。返回true,表示此次評估一次性通過,后面如果授權上下文發(fā)生變化,也不再調用;如果返回false,比較危險,有可能導致循環(huán)調用,一般來說,處理完成后,應該返回true。

 

細節(jié)的東西我們先不管,我們先來學會如何自定義授權策略,并且把自定義的策略放進服務中。

下面咱們定義兩個授權策略,這里只為了演示,所以Evaluate方法里面不做什么。

Android培訓,安卓培訓,手機開發(fā)培訓,移動開發(fā)培訓,云培訓培訓

        		

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式