[英]Asp.Net Conditional URL Role Authentication
我想限制對特定URL的訪問,除非用戶是2個不同角色的成員。 在這種情況下,如果用戶同時具有“報告和存檔”角色,則只希望授予對該URL的訪問權限。 有沒有辦法在ASP.net中做到這一點?
<location path="testpage.aspx">
<system.web>
<authorization>
<allow roles="Reporting, Archiving"/>
<deny users="*"/>
</authorization>
</system.web>
我想要這樣的東西:
<location path="testpage.aspx">
<system.web>
<authorization>
<allow roles="Reporting & Archiving"/>
<deny users="*"/>
</authorization>
</system.web>
這有點丑陋,但是您可以從當前使用的角色提供程序(SqlRoleProvider,WindowsTokenRoleProvider,AuthorizationStoreRoleProvider)繼承,重寫GetRolesForUser,調用基本實現以獲取角色,並根據需要在其中組合它們。 然后,顯然將自定義角色提供程序放在<roleManager>配置部分的web.config中。
您只需要重寫一個方法(也許可以重寫GetUsersInRole)並根據需要將它們組合即可。
public override string[] GetRolesForUser( string username ) {
List<string> roles = new List<string>( base.GetRolesForUser(username) );
if( roles.Contains("Reporting") && roles.Contains("Archiving") ) {
roles.Add("ReportingAndArchiving");
}
return roles.ToArray();
}
您可以創建一個SQL函數,該函數給出特定的用戶ID,頁面URL和允許的角色(XML)列表,並返回一個位,指示是否授予對該URL的訪問權限,然后使用該位來設置一個標志,該標志確定在javascript或DHTML菜單等中將其顯示為有效選擇。
您可以實現自定義角色提供程序 。 然后,您可以定義新的“假”角色ReportingAndArchiving,並在請求ReportingAndArchiving角色時檢查用戶是否屬於IsUserInRole方法內的Reporting and Archiving角色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.