亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

考察Membership, Roles, 和Profile - Part 2

系統 2534 0

本文英文原版及代碼下載:

http://aspnet.4guysfromrolla.com/articles/121405-1.aspx#postadlink


考察Membership, Roles, 和Profile - Part 2


導言:

在Part 1我們已經提到Membership class類包含很多方法可以用來創建、刪除、修改、檢索、驗證用戶.由于每個開發者的需求不同,Membership class類被設計為使用provider模式。這就意味著membership framework在實際的執行過程中可以進行用戶定制.ASP.NET包含有SqlMembershipProvider和ActiveDirectoryMembershipProvider,如果有必要的話,你可以構建自己的provider.

很多網站需要將用戶劃分為不同的角色.對于處于某種角色的用戶,要指定其可以訪問哪些頁面、可以看到頁面的哪些內容、頁面某些區域的內容對用戶是可編輯還是只讀.使用ASP.NET 2.0的roles service的話,對用戶進行角色劃分、基于角色的功能和驗證都比較簡單了.與membership service類似,我們可以創建、刪除role,對用戶分配或移除角色;哪些用戶屬于哪個角色.

在本文,我們將考察ASP.NET 2.0的role service.我們最開始將看如何在網站里建立并配置roles service,以及如何基于認證規則來使用roles. 此外,我們看如何編程來處理roles service,以及如何使用LoginView Web控件,根據用戶的角色顯示信息.

先前準備

為使你的website支持角色,你的網站首先要有用戶帳戶,這些帳戶要么
由SqlMembershipProvider存儲在數據庫里;要么存儲在其它的數據庫里.
而role只是一個概念,將role分給具體的用戶.


設置你的Website支持Role

和membership service一樣,roles service也是使用provider模式,只是ASP.NET 2.0有3個role providers:

1.SqlRoleProvider(默認的)—將role信息存儲在一個SQL Server數據庫里.如果你使用SqlMembershipProvider的話,也可以用它來處理roles.具體來說,roles service使用2個表:aspnet_Roles表用來為系統里的每一個role生成一條記錄;另一個是aspnet_UsersInRoles表,該表將aspnet_Users表與aspnet_Roles表里的roles聯系起來.

2.WindowsTokenRoleProvider—獲得Windows用戶的族群信息.如果你是由Windows authentication登錄的授權用戶,那么該provider允許你查看用戶所在組的情況

3.AuthorizationStoreRoleProvider—由授權管理策略提供role信息,比如Active Directory.

本文將只對SqlRoleProvider provider進行考察,為了使用該provider,我們必須創建相應的數據庫表.就像我們在Part 1探討的那樣,有2種方式:

1.通過ASP.NET SQL Server注冊工具(aspnet_regsql.exe)——該工具允許你將必需的數據庫表、視圖、存儲過程拷貝到指定的SQL Server 2000 或 SQL Server 2005數據庫.

2.通過ASP.NET Website管理工具——當將認證類型選為"From the internet"時,該工具自動的調用aspnet_regsql.exe工具,在App_Data文件夾里的ASPNETDB.mdf數據庫里創建相應的數據表.

假設你已經創建好了必需的數據庫表,要激活role service的話,打開ASP.NET Website管理工具,點擊“Security”標簽,再點擊"Enable roles"鏈接,如下所示:

考察Membership, Roles, 和Profile - Part 2
圖1

在Web.config文件里添加如下的代碼:

<roleManager enabled="true" />


如果你是使用的自己的數據庫來存儲SqlMembershipProvider 和 SqlRoleProvider providers的數據,你需要在<roleManager>元素里指定
一個provider,像下面這樣:

<configuration>
<connectionStrings>
<add name="MyDB" connectionString="..." />
</connectionStrings>
<system.web>
... authentication & authorization settings ...

<roleManager enabled="true"
defaultProvider="CustomizedRoleProvider">
<providers>
<add name="CustomizedRoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="MyDB" />
</providers>
</roleManager>
</system.web>
</configuration>

其中,<connectionString>設置為myDB,其指定的連接字符串連接的數據庫里存儲的是與membership 和 role有關的數據庫表.(我們也可以在<roleManager> 和 <providers>元素里添加額外的特性,我們將在后面的文章探討)

管理Roles

role service提供了一個Roles class類,該類包含的方法可用于創建和刪除角色,以及從角色里添加或移除用戶.當你希望以編程的方式來完成這些事情的時候,這是比較有用的.不過我們通常以手工的形式來進行操作.我們可以用ASP.NET Website管理工具來完成,一旦一個角色被激活后,"Enable roles"鏈接就會變成這2個鏈接:"Disable roles"和"Create or Manage roles"。點擊后一個鏈接的話,在接下來的界面里你可以添加新角色或管理、刪除現有的角色.

考察Membership, Roles, 和Profile - Part 2

圖2


點擊Manage鏈接的話,你將看到某個角色下的一系列用戶.類似的,退回到Security標簽,選"Manage users"的話,你也可以看到一個用戶所屬的一系列角色.


基于Role的認證

在ASP.NET 1.x版本里,利用Web.config文件里的<authorization>元素,我們可以對基于URL的認證(URL-based authorization),進行user和role級的限制.具體來說,一個<authorization>元素包含多個<allow> 和 <deny>元素,以指定一個文件夾或URL的認證角色.默認情況下anyone可以訪問一個URL,因此如果你要進行限制的話,你應該將<allow> 和 <deny> 元素合理的組合起來.

在2.0版本里,我們可以通過ASP.NET Website管理工具任意的進行設置.(當然,如果你愿意的話,也可以手工在Web.config文件添加<authorization>元素)。在管理工具的Security標簽,點"Create access rules"鏈接. 這樣在接下來的界面里你可以將authorization設置為users, user classes(*代表所有的users,?代表匿名users)或者roles(如果系統里有的話).選一個文件夾應用rules,指定user, user class,或 role,然后選擇訪問權限(Allow 或 Deny)

考察Membership, Roles, 和Profile - Part 2

圖3

處理Roles Class類

通過Role class類可以編程的方式以多種方法訪問role service,比如:

.CreateRole(roleName):向系統添加新的角色

.DeleteRole(roleName):從系統刪除角色

.AddUserToRole(userName, roleName):向特定角色添加特定的用戶

.IsUserInRole(roleName) / IsUserInRole(userName, roleName):返回true 或 false.判斷當前用戶是否是某個特定角色的一員.

.GetAllRoles():返回有關系統所有的角色的字符串數組

.GetRolesForUser() / GetRolesForUser(userName):返回一個字符串數組,要么是當前用戶所屬的所有角色,要么是某個指定用戶所屬的所有角色.

這些方法可以用來在頁面展示系統里所有的角色,或某個用戶所屬的所有角色,或判斷某個用戶是否屬于某個角色.本文結尾部分的示例有2個頁面來演示如何使用Roles lass類:一個是UserList.aspx頁面,它列出了系統的所有用戶以及用戶所屬的角色。另一個是RoleList.aspx頁面, 它列出了系統所有的角色以及每個角色所屬的用戶.

在LoginView控件里使用基于角色的代碼

在前面我們總覽了ASP.NET 2.0里的security Web控件.其中一個是LoginView控件,它有2個模板:AnonymousTemplate和LoggedInTemplate.
當一個匿名用戶登錄頁面時,該控件將顯示AnonymousTemplate模板里的內容;如果是注冊用戶登錄的話,將顯示LoggedInTemplate模板里的內容.

LoginView控件也可以包含基于角色的模板,比如向控件添加一個 <RoleGroups>元素,再在里面放一個<asp:RoleGroup Roles="comma-delimited list of roles">模板,如下:

<asp:LoginView ID="LoginView1" runat="server">
<AnonymousTemplate>
OMG, you are, like so not logged in!
</AnonymousTemplate>

<RoleGroups>
<asp:RoleGroup Roles="Developer">
<ContentTemplate>
Welcome back! You are a Developer, I can
tell by your svelte figure and impeccable
social skills!
</ContentTemplate>
</asp:RoleGroup>
<asp:RoleGroup Roles="Administrator">
<ContentTemplate>
We all bow down to our system adminstrators!
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>

<LoggedInTemplate>
You are logged in!! But, wait, you are not
a member of any roles.
</LoggedInTemplate>
</asp:LoginView>

當訪問者登錄頁面時,如果有對應其角色的模板,就顯示該模板里的內容.

如果你以Developer角色登錄的話,你就會看到Developer模板的內容,而不是LoggedInTemplate模板的內容.類似的,如果你屬于Developer 和 Administrator角色, 你將會看到看到模板列表里第一個吻合的模板(就本例而言,為Developer)


結語:

就像我們在本文看到的那樣,ASP.NET 2.0支持roles和membership services 。它們都使用provider model模式。都包含很多方法來執行相應的任務.都可以通過ASP.NET Website管理工具進行配置.

激活了roles功能后,我們一個通過編程或使用Website管理工具手工的創建角色或向角色賦值.ASP.NET允許基于角色的驗證規則.所以你可以對各種文件和文件夾設置訪問權限.最后,LoginView控件提供了基于角色的模板,那意味著可以根據角色的不同顯示不同的內容.

祝編程快樂!

考察Membership, Roles, 和Profile - Part 2


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人精品一区二区仙踪林 | 快播第四色 | 毛茸茸free牲交 | 四虎国产精品成人永久免费影视 | 国产精品乱码免费一区二区 | 日韩成人精品视频 | 夜夜精品视频一区二区 | 91视频香蕉视频 | 国产在线观看美女福利精 | 亚洲激情在线看 | 人与禽交免费网站视频 | 欧美性生活一级 | 成人看片黄a免费 | 欧美福利在线视频 | 精品国产自在久久 | 爆操白虎 | 久久精品在现线观看免费15 | 四虎影院.com | 99热久久精品国 | 轻轻色在线视频中文字幕 | 久久亚洲国产午夜精品理论片 | 亚洲精品久久久久综合网 | 亚洲在线精品视频 | 欧美韩国日本在线观看 | 免费中文字幕一级毛片 | 亚洲一区二区三区免费 | 国产香蕉在线观看 | 国产成人18黄禁网站免费观看 | 狠狠操美女 | 天天色综合2 | 日本欧美一二三区色视频 | 免费欧洲毛片a级视频老妇女 | 国产一区二 | 久久ri精品高清一区二区三区 | 天天色色色 | 色综合免费视频 | 日本又黄又爽又色的视频免费 | 在线久草视频 | 国产在线观看成人免费视频 | 看片亚洲| 香蕉成人啪国产精品视频综合网 |