欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Community Server專題十:MemberRole之RoleMana

系統 1978 0
?

Community Server 專題十: MemberRole RoleManager

由于最近忙于一些瑣事,近半個月都沒有寫新的專題,今天忙里抽閑趕緊補上,實在是抱歉。

?

設計做多了就會發現,用戶權限管理是一個永恒的話題,幾乎沒有什么項目不需要權限和角色管理的,可能會無數次去寫角色管理的代碼,而且會根據項目的不同粒度也會有所不同。在 CS 中,采用了 MemberRole.dll 中的 RoleManager 進行角色管理,該角色管理機制同樣在 asp.net 2.0 beta2 中得到應用。在分析代碼之前先看看數據庫中的角色的關系表: Community Server專題十:MemberRole之RoleManager

表分兩種前綴,一種是“ aspnet_ ”另一種是“ cs_ ”,“ aspnet_ ”是采用 MemberRole.dll 組件所必需的一些表,包括過程和視圖等都是這樣命名的,在 asp.net 2.0 beta2 中你也可以看到同樣的表、視圖與儲存過程。“ cs_ ”前綴是 CS 系統需要的表,由此可以看到 MemberRole.dll 中的 RoleManager 只管理到角色級別,通常我們還會給角色添加一些權限,然后在應用系統中判斷角色擁有的權限從而決定用戶是否有訪問的權限,當然一個用戶可以有多個角色,一個角色又可以有多個權限。有時你設計的某些系統是不需要做如此多權限管理的,只要多個角色就可以解決問題,那么就不再需要擴展數據庫,直接使用 MemberRole.dll 中的 RoleManager 就可以了。

注意:你可能會對 cs_SectionPermissions cs_ProductPermissions 表產生疑惑,這里有兩個權限表,分別管理兩種權限, cs_SectionPermissions 中存儲節點級別的權限,如 Blog 中,是否有權限開通 blog ,管理所有 blog 等,這些權限就放在 cs_SectionPermissions ,但是對于每個 blog ,如我的 blog ,現在不想要某個用戶訪問,或者需要某個用戶幫忙管理,再或者某個地方某些用戶可以訪問,某些不行,這樣的權限就放入 cs_ProductPermissions 中設置。

RoleManager 是一個 HttpModule ,由此可以在 web.config 中看到如下的配置文件:

?

< add? name ="RoleManager" ?type ="Microsoft.ScalableHosting.Security.RoleManagerModule,?MemberRole,?Version=1.0.0.0,?Culture=neutral,?PublicKeyToken=b7c773fb104e7562" ? />

?

這也是 RoleManager 角色管理的入口點,同時,在 RoleManager 中實現了 IConfigurationSectionHandler 接口,用來讀取 Web.config 中的以下配置:

????????

< roleManager?

??????????????
cacheRolesInCookie ="true" ?cookieName =".CSRoles" ?cookieTimeout ="90"

??????????????cookiePath
="/" ??cookieRequireSSL ="false" ?cookieSlidingExpiration ="true" ?

??????????????createPersistentCookie
="true" ?cookieProtection ="All" ?maxCachedResults ="1000" ? >

??????????????
< providers >

???????????????????
< add

???????????????????????
name ="CommunityServerSqlProvider"

???????????????????????type
="CommunityServer.Components.CSRoleProvider,?CommunityServer.Components"

???????????????????????connectionStringName
="SiteSqlServer"

???????????????????????applicationName
="dev"

???????????????????????description
="Stores?and?retrieves?roles?data?from?the?local?Microsoft?SQL?Server?database" ?

???????????????????
/>

??????????????
</ providers >

?????
</ roleManager > ?????

再這里我們又看到了 Provider 模型,其實 asp.net 2.0 beta2 中大量使用了這種數據訪問模型。它的優點我在前面的專題中已經講解過,不理解的朋友可以看我之前的專題。

RoleManager 很重要的一個類就是:

Community Server專題十:MemberRole之RoleManager 該類繼承至 IPrincipal ,因此我們可以在用戶登錄后通過檢查當前 Context User 的一些方法和屬性,判斷擁護是否擁有某角色。操作的方法在 RoleMangerModule 類下的 OnEnter 下:

OnEnter方法

由于知識點比較簡單, MSDN 上也有相關的 IPrincipal Identity 的介紹,我就不細細的分析。

RoleManger 里,很多地方使用了 Cookie ,這樣做提高了不少的效率,你想,如果每個用戶每次訪問一個頁面都去讀一次數據庫,把該訪問用戶的權限讀取出來,也許你聰明點,把該用戶的權限先緩存在內存中,并且設置一定的過期時間,其實你還能再聰明一點,那就是把角色保存在客戶端的 Cookie ,這樣連服務器的內存都節約了。只有在用戶第一次登錄,或者清除了 Cookie Cookie 失效的情況下才需要訪問數據庫。但是這也帶來一個問題,就是如果客戶端禁止使用 Cookie ,用戶將無法正常訪問。 CS 中通過在 web.config 中可以配置是否啟用這種機制。

?

到這里,整個 MemberRole.dll 算是粗略的講解了一遍,由于時間上的限制不可能滿足所有讀者的要求,如果有疑問可以 msn 我或者給我留言。后面一些專題我將說說 CS 的頁面,包括 MasterPage 、 Theme Skin 等機制。

Community Server專題十:MemberRole之RoleManager


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 免费观看一级毛片 | 五月天婷五月天综合网站 | 青娱乐在线视频观看 | 日本高清一区二区三区不卡免费 | 色综合久久中文色婷婷 | 日韩成人在线播放 | 嫩草影院在线免费观看 | 男女超猛烈啪啦啦的免费视频 | 亚洲黄色免费 | 伊人青青操 | 五月天婷婷基地 | 国产网站在线 | 亚洲一区在线观看视频 | 欧美精品亚洲一区二区在线播放 | 日日干天天摸 | 国产成人影院 | 国产一级毛片视频 | 日韩a级一片 | 欧美高清极品videossex | 亚洲午夜高清 | 亚洲第一页在线播放 | 成在线人视频免费视频 | 久操久热 | 免费观看成人碰视频公开 | 亚洲国产精品一区二区第一页 | 亚洲免费在线观看 | 日韩经典视频 | 欧美一级黄色免费看 | 日本爽爽爽爽爽爽免费 | 色偷偷网址 | 国产网站大全 | 国产高清在线视频 | 麻豆短视频传媒网站怎么找 | 91精品国产91久久久久久 | 久久精品亚洲 | 国产在线看一区 | 免费播放春色aⅴ视频 | 日本wwwwwwwww | 国产精品视频播放 | 免费观看黄色a一级视频播放 | 天天色天天看 |