【W(wǎng)CF】授權(quán)策略詳解

 

IAuthorizationPolicy 的 Evaluate 方法

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

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

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

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

 

細(xì)節(jié)的東西我們先不管,我們先來學(xué)會(huì)如何自定義授權(quán)策略,并且把自定義的策略放進(jìn)服務(wù)中。

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

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

        		

延伸閱讀

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