認(rèn)識ASP NET MVC的5種AuthorizationFilter

認(rèn)識ASP NET MVC的5種AuthorizationFilter

ID:39643860

大?。?0.00 KB

頁數(shù):10頁

時(shí)間:2019-07-08

認(rèn)識ASP NET MVC的5種AuthorizationFilter_第1頁
認(rèn)識ASP NET MVC的5種AuthorizationFilter_第2頁
認(rèn)識ASP NET MVC的5種AuthorizationFilter_第3頁
認(rèn)識ASP NET MVC的5種AuthorizationFilter_第4頁
認(rèn)識ASP NET MVC的5種AuthorizationFilter_第5頁
資源描述:

《認(rèn)識ASP NET MVC的5種AuthorizationFilter》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、認(rèn)識ASP.NETMVC的5種AuthorizationFilter在總體介紹了篩選器及其提供機(jī)制(《深入探討ASP.NETMVC的篩選器》)之后,我們按照執(zhí)行的先后順序?qū)λ姆N不同的篩選器進(jìn)行單獨(dú)介紹,首先來介紹最先執(zhí)行的AuthorizationFilter。從命名來看,AuthorizationFilter用于完成授權(quán)相關(guān)的工作,所以它應(yīng)該在Action方法被調(diào)用之前執(zhí)行才能起到授權(quán)的作用。不僅限于授權(quán),如果我們希望目標(biāo)Action方法被調(diào)用之前中斷執(zhí)行的流程“做點(diǎn)什么”,都可以以AuthorizationFilter的形式來實(shí)現(xiàn)。[本文已經(jīng)同步到《HowASP.N

2、ETMVCWorks?》中]一、IAuthorizationFilter所有的AuthorizationFilter實(shí)現(xiàn)了接口IAuthorizationFilter。如下面的代碼片斷所示,IAuthorizationFilter定義了一個(gè)OnAuthorization方法用于實(shí)現(xiàn)授權(quán)的操作。作為該方法的參數(shù)filterContext是一個(gè)表示授權(quán)上下文的AuthorizationContext對象,而AuthorizationContext直接繼承自ControllerContext。1:publicinterfaceIAuthorizationFilter2:{3:

3、voidOnAuthorization(AuthorizationContextfilterContext);4:}5:6:publicclassAuthorizationContext:ControllerContext7:{8:publicAuthorizationContext();9:publicAuthorizationContext(ControllerContextcontrollerContext,ActionDescriptoractionDescriptor);10:11:publicvirtualActionDescriptorActionDesc

4、riptor{get;set;}12:publicActionResultResult{get;set;}13:}AuthorizationContext的ActionDescriptor屬性表示描述當(dāng)前執(zhí)行Action的ActionDescriptor對象,而Result屬性返回一個(gè)用于在授權(quán)階段呈現(xiàn)的ActionResult。AuthorizationFilter的執(zhí)行是ActionInvoker進(jìn)行Action執(zhí)行的第一項(xiàng)工作,因?yàn)楹罄m(xù)的工作(Model綁定、Model驗(yàn)證、Action方法執(zhí)行等)只有在成功授權(quán)的基礎(chǔ)上才會有意義。ActionInvoker在通過

5、執(zhí)行AuthorizationFilter之前,會先根據(jù)當(dāng)前的Controller上下文和解析出來的用于描述當(dāng)前Action的ActionDescriptor,并以此創(chuàng)建一個(gè)表示授權(quán)上下文的AuthorizationContext對象。然后將此AuthorizationContext對象作為參數(shù),按照Filter對象Order和Scope屬性決定的順序執(zhí)行所有AuthorizationFilter的OnAuthorization。在所有的AuthorizationFilter都執(zhí)行完畢之后,如果指定的AuthorizationContext對象的Result屬性表示得A

6、ctionResult不為Null,整個(gè)Action的執(zhí)行將會終止,而ActionInvoker將會直接執(zhí)行該ActionResult。一般來說,某個(gè)AuthorizationFilter在對當(dāng)前請求實(shí)施授權(quán)的時(shí)候,如果授權(quán)失敗它可以通過設(shè)置傳入的AuthorizationContext對象的Result屬性響應(yīng)一個(gè)“401,Unauthrized”回復(fù),或者呈現(xiàn)一個(gè)錯(cuò)誤頁面。二、AuthorizeAttribute如果我們要求某個(gè)Action只能被認(rèn)證的用戶訪問,可以在Controller類型或者Action方法上應(yīng)用具有如下定義的AuthorizeAttribute

7、特性。AuthorizeAttribute還可以具體限制目標(biāo)Action可被訪問的用戶或者角色,它的Users和Roles屬性用于指定被授權(quán)的用戶名和角色列表,中間用采用逗號作為分隔符。如果沒有顯式地對Users和Roles屬性進(jìn)行設(shè)置,AuthorizeAttribute在進(jìn)行授權(quán)操作的時(shí)候只要求訪問者是被認(rèn)證的用戶。1:[AttributeUsage(AttributeTargets.Method

8、AttributeTargets.Class,Inherited=true,AllowMultiple=true)]2:publiccla

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。