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

考察Membership, Roles, 和Profile - Part 2

系統(tǒng) 2623 0

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

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


考察Membership, Roles, 和Profile - Part 2


導(dǎo)言:

在Part 1我們已經(jīng)提到Membership class類包含很多方法可以用來(lái)創(chuàng)建、刪除、修改、檢索、驗(yàn)證用戶.由于每個(gè)開(kāi)發(fā)者的需求不同,Membership class類被設(shè)計(jì)為使用provider模式。這就意味著membership framework在實(shí)際的執(zhí)行過(guò)程中可以進(jìn)行用戶定制.ASP.NET包含有SqlMembershipProvider和ActiveDirectoryMembershipProvider,如果有必要的話,你可以構(gòu)建自己的provider.

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

在本文,我們將考察ASP.NET 2.0的role service.我們最開(kāi)始將看如何在網(wǎng)站里建立并配置roles service,以及如何基于認(rèn)證規(guī)則來(lái)使用roles. 此外,我們看如何編程來(lái)處理roles service,以及如何使用LoginView Web控件,根據(jù)用戶的角色顯示信息.

先前準(zhǔn)備

為使你的website支持角色,你的網(wǎng)站首先要有用戶帳戶,這些帳戶要么
由SqlMembershipProvider存儲(chǔ)在數(shù)據(jù)庫(kù)里;要么存儲(chǔ)在其它的數(shù)據(jù)庫(kù)里.
而role只是一個(gè)概念,將role分給具體的用戶.


設(shè)置你的Website支持Role

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

1.SqlRoleProvider(默認(rèn)的)—將role信息存儲(chǔ)在一個(gè)SQL Server數(shù)據(jù)庫(kù)里.如果你使用SqlMembershipProvider的話,也可以用它來(lái)處理roles.具體來(lái)說(shuō),roles service使用2個(gè)表:aspnet_Roles表用來(lái)為系統(tǒng)里的每一個(gè)role生成一條記錄;另一個(gè)是aspnet_UsersInRoles表,該表將aspnet_Users表與aspnet_Roles表里的roles聯(lián)系起來(lái).

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

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

本文將只對(duì)SqlRoleProvider provider進(jìn)行考察,為了使用該provider,我們必須創(chuàng)建相應(yīng)的數(shù)據(jù)庫(kù)表.就像我們?cè)赑art 1探討的那樣,有2種方式:

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

2.通過(guò)ASP.NET Website管理工具——當(dāng)將認(rèn)證類型選為"From the internet"時(shí),該工具自動(dòng)的調(diào)用aspnet_regsql.exe工具,在App_Data文件夾里的ASPNETDB.mdf數(shù)據(jù)庫(kù)里創(chuàng)建相應(yīng)的數(shù)據(jù)表.

假設(shè)你已經(jīng)創(chuàng)建好了必需的數(shù)據(jù)庫(kù)表,要激活role service的話,打開(kāi)ASP.NET Website管理工具,點(diǎn)擊“Security”標(biāo)簽,再點(diǎn)擊"Enable roles"鏈接,如下所示:

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

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

<roleManager enabled="true" />


如果你是使用的自己的數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)SqlMembershipProvider 和 SqlRoleProvider providers的數(shù)據(jù),你需要在<roleManager>元素里指定
一個(gè)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>設(shè)置為myDB,其指定的連接字符串連接的數(shù)據(jù)庫(kù)里存儲(chǔ)的是與membership 和 role有關(guān)的數(shù)據(jù)庫(kù)表.(我們也可以在<roleManager> 和 <providers>元素里添加額外的特性,我們將在后面的文章探討)

管理Roles

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

考察Membership, Roles, 和Profile - Part 2

圖2


點(diǎn)擊Manage鏈接的話,你將看到某個(gè)角色下的一系列用戶.類似的,退回到Security標(biāo)簽,選"Manage users"的話,你也可以看到一個(gè)用戶所屬的一系列角色.


基于Role的認(rèn)證

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

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

考察Membership, Roles, 和Profile - Part 2

圖3

處理Roles Class類

通過(guò)Role class類可以編程的方式以多種方法訪問(wèn)role service,比如:

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

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

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

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

.GetAllRoles():返回有關(guān)系統(tǒng)所有的角色的字符串?dāng)?shù)組

.GetRolesForUser() / GetRolesForUser(userName):返回一個(gè)字符串?dāng)?shù)組,要么是當(dāng)前用戶所屬的所有角色,要么是某個(gè)指定用戶所屬的所有角色.

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

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

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

LoginView控件也可以包含基于角色的模板,比如向控件添加一個(gè) <RoleGroups>元素,再在里面放一個(gè)<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>

當(dāng)訪問(wèn)者登錄頁(yè)面時(shí),如果有對(duì)應(yīng)其角色的模板,就顯示該模板里的內(nèi)容.

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


結(jié)語(yǔ):

就像我們?cè)诒疚目吹降哪菢樱珹SP.NET 2.0支持roles和membership services 。它們都使用provider model模式。都包含很多方法來(lái)執(zhí)行相應(yīng)的任務(wù).都可以通過(guò)ASP.NET Website管理工具進(jìn)行配置.

激活了roles功能后,我們一個(gè)通過(guò)編程或使用Website管理工具手工的創(chuàng)建角色或向角色賦值.ASP.NET允許基于角色的驗(yàn)證規(guī)則.所以你可以對(duì)各種文件和文件夾設(shè)置訪問(wèn)權(quán)限.最后,LoginView控件提供了基于角色的模板,那意味著可以根據(jù)角色的不同顯示不同的內(nèi)容.

祝編程快樂(lè)!

考察Membership, Roles, 和Profile - Part 2


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品福利短视在线播放频 | 亚洲一区二区三区在线 | 亚洲欧美日韩中文字幕在线不卡 | 日本在线视频一区二区 | 日韩欧美精品综合一区二区三区 | 国产欧美曰韩一区二区三区 | 欧美在线观看19 | 日本不卡视频在线观看 | 日韩视频在线播放 | 国产喷水 | 日本男人天堂 | 亚洲国产伦理 | 亚洲欧美无人区乱码 | 亚洲一区无码中文字幕 | 欧美日日日| 色婷婷亚洲五月色综合色 | 国产目拍亚洲精品99久久精品 | 婷婷天天操 | 久久久久国产精品www | 免费一级欧美性大片 | 成人性视频免费网站 | 国产欧美日本 | 欧美一级黄色免费看 | 黄色免费一级播放片 | 激情深爱| 日本香蕉一区二区三区 | 日本精品久久久久中文字幕 | a毛片毛片av永久免费 | 日韩精品在线一区二区 | av毛片 | 亚洲一区二区视频在线观看 | 天天干夜夜夜 | 日本不卡一区二区 | 国产人成午夜免视频网站 | 五月婷婷天堂 | 欧美受xxxx黑人xyx爽 | 色婷婷天天综合在线 | 丁香亚洲 | 玖玖精品视频在线观看 | 国产成在线观看免费视频 | 在线一区视频 |