淺析ASP.NET授權(quán)模塊
ASP.NET授權(quán)模塊主要有兩個:FileAuthorizationModule和UrlAuthorizationModule。他們也實現(xiàn)了IHttpModule接口。這些模塊可以參照所試用的身份驗證類型來決定到底采用哪個ASP.NET授權(quán)模塊:
如果試用的是Windows身份驗證,那么在授權(quán)檢查的時候就會使用FileAuthorizationModule;
如果在web.config中提供了<authorization/>元素,那么就會采用UrlAuthorizationModule。如下面的:
- <authorization>
- <allow roles ="" users=""/>
- <deny users=""/>
- </authorization>
FileAuthorizationModule:
如果使用 Windows身份驗證,就會采用FileAuthorizationModule模塊。這個模塊可以處理Authorization事件,并且能夠?qū)IS提供的請求的令牌和目標(biāo)資源執(zhí)行訪問檢查。而且這也用到了系統(tǒng)的ACL(訪問控制列表).
例如,如果請求的資源是Default.aspx,當(dāng)前的用戶是xiaoyang,那么FileAuthorizationModule就會執(zhí)行訪問檢查,看看xiaoyang時候具備訪問Default.aspx的讀的權(quán)限,如果在Windows的用戶賬戶中有xiaoyang這個賬戶,并且具有訪問的權(quán)限,那么請求成功,否則,F(xiàn)ileAuthorizationModule就把Reponse.StatusCode設(shè)置為401(未授權(quán)),之后請求就結(jié)束了。
UrlAuthorizationModule:
和上面的處理模塊不一樣,不管使用何種類型的身份驗證,只要配置了web.config中的<authorization/>元素,就要使用UrlAuthorizationModule模塊。這個模塊在處理的時候執(zhí)行如下:
(1)把<authorization/>中聲明的用戶名和HttpContext.User.Identity進行比較
(2)把<authorization/>聲明的角色信息和HttpContext.User.IsInRole比較
如果比較成功就可以訪問相應(yīng)的授權(quán)的資源,否則把Reponse.StatusCode設(shè)置為401(未授權(quán)),之后請求就結(jié)束了。以上就是介紹ASP.NET授權(quán)模塊
【編輯推薦】