總覽地址
https://msdn.microsoft.com/zh-cn/library/9ab2fxh0.aspx
其中基本概述是第一篇:了解角色管理
來自 <https://msdn.microsoft.com/zh-cn/library/5k850zwb.aspx>
第二篇是類的參考而已,以后進階使用時可供查詢之用。
最后一篇是介紹自定義角色提供程序RoleProvider要重寫的方法及方法的描述。
若要使用角色管理,首先要啟用它,並配置能夠利用角色的訪問規則(可選)。然后可以在運行時使用角色管理功能處理角色。
<roleManager enabled="true" cacheRolesInCookie="true" > </roleManager>
再配置授權部分,則角色與權限的關聯就建立起來
<authorization> <allow roles="members" /> <deny users="*" /> </authorization>
剩余部分是用戶與角色的關聯。如果使用的是Windows身份認證,則使用回windows本身的用戶與角色組之間的關聯;如果使用的是Forms身份認證,則需要使用以下代碼來實現
///創建角色 Roles.CreateRole("members"); ///角色與用戶關聯 Roles.AddUsersToRole("JoeWorden", "manager"); string[] userGroup = new string[2]; userGroup[0] = "JillShrader"; userGroup[1] = "ShaiBassli"; Roles.AddUsersToRole(userGroup, "members");
角色需要先建立,但一次建立后下次重復建立則會報錯,同樣用戶添加角色也會重復添加會報錯。
驗證用戶是否具有指定角色,可以用Iprincipal的IsInRole方法,而獲取用戶有多少角色,則需要用RolePrincipal的GetRoles()方法了。當啟用了角色管理后,User則是RolePrincipal的實例。
緩存角色信息
如果用戶的瀏覽器允許 Cookie,則 ASP.NET 可以選擇在用戶計算機的加密 Cookie 中存儲角色信息。在每個頁面請求中,ASP.NET 讀取 Cookie 並根據 Cookie 填充該用戶的角色信息。此策略可最大程度地減小從數據庫中讀取角色信息的需要。如果用戶的瀏覽器不支持 Cookie 或者 Cookie 已禁用,則只在每個頁面請求期間緩存角色信息。
角色提供程序
默認情況下使用的RoleProvider是SqlRoleProvider,它的連接字符串是data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true,數據庫存放於項目文件夾App_Data中,可是庫的現在尚未附加成功,因而無法查看里面內容。