欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: www久久爱 | 一级aaaaaa毛片免费 | 精品国产一区在线观看 | 一区二区三区四区亚洲 | 91精品久久久久久久久久 | 99久久99热这里只有精品 | 国产在线精品一区二区三区 | 69堂永久69tangcom | 免费看一级视频 | 91精品国产综合久久久久久 | 国产高清成人 | 久久久午夜精品 | 日本久久精品免视看国产成人 | 91精品国产乱码久久久久久久久 | 五月天婷婷缴情五月免费观看 | 国产亚洲欧美日本一二三本道 | 欧美精品一区二区三区在线 | 三级黄色一级视频 | 久久狠狠一本精品综合网 | 69久久夜色精品国产69 | 欧美综合亚洲 | 波多野吉衣一区二区三区四区 | 国产精品免费一区二区三区 | 日本理论片好看理论片 | 日本免费观看官网 | 久久人人爽人人爽 | a级片在线免费看 | 久色乳综合思思在线视频 | 天天看天天操 | 免费视频精品一区二区 | 精品伊人久久久大香线蕉欧美 | ⅴideo裸体秀hd | 国产精品1区 | 成人福利 | 香蕉视频在线观看免费国产婷婷 | 色蜜桃网 | 男女真实有遮挡xx00动态图 | 久久黄色 | 亚洲视频免费在线播放 | 99人体做爰视频 | 日韩av在线不卡 |