国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
使用membership(System.Web.Security)來進(jìn)行角色與權(quán)_2009...
1.membership簡(jiǎn)介
2.membership在sql server中的設(shè)置
3.配置web.config
4.創(chuàng)建用戶CreateUserWizard控件
5.用戶登錄login控件
6.顯示當(dāng)前用戶的名稱LoginName控件
7.檢測(cè)用戶的身份驗(yàn)證狀態(tài)的LoginStatus控件
8.為不同類別用戶呈現(xiàn)不同內(nèi)容的LoginView控件
9.更改密碼的ChangePassword控件
10.自助找回密碼的PasswordRecovery控件
11.總結(jié)

1.membership簡(jiǎn)介

membership,真的很有趣,很方便,很有用。介紹給大家。
在 ASP.NET 應(yīng)用程序中,Membership 類用于驗(yàn)證用戶憑據(jù)并管理用戶設(shè)置(如密碼和電子郵件地址)。Membership 類可以獨(dú)自使用,或者與 FormsAuthentication 一起使用以創(chuàng)建一個(gè)完整的 Web 應(yīng)用程序或網(wǎng)站的用戶身份驗(yàn)證系統(tǒng)。Login 控件封裝了 Membership 類,從而提供一種便捷的用戶驗(yàn)證機(jī)制。
Membership 類提供的功能可用于:
1)創(chuàng)建新用戶。
2)將成員資格信息(用戶名、密碼、電子郵件地址及支持?jǐn)?shù)據(jù))存儲(chǔ)在 Microsoft SQL Server 或其他類似的數(shù)據(jù)存儲(chǔ)區(qū)。
3)對(duì)訪問網(wǎng)站的用戶進(jìn)行身份驗(yàn)證??梢砸跃幊谭绞綄?duì)用戶進(jìn)行身份驗(yàn)證,也可以使用 Login 控件創(chuàng)建一個(gè)只需很少代碼或無需代碼的完整的身份驗(yàn)證系統(tǒng)。
4)管理密碼。包括創(chuàng)建、更改、檢索和重置密碼等等??梢赃x擇配置 ASP.NET 成員資格以要求一個(gè)密碼提示問題及其答案來對(duì)忘記密碼的用戶的密碼重置和檢索請(qǐng)求進(jìn)行身份驗(yàn)證。
默認(rèn)情況下,ASP.NET 成員資格可支持所有 ASP.NET 應(yīng)用程序。默認(rèn)成員資格提供程序?yàn)?SqlMembershipProvider 并在計(jì)算機(jī)配置中以名稱 AspNetSqlProvider 指定。SqlMembershipProvider 的默認(rèn)實(shí)例配置為連接到 Microsoft SQL Server 的一個(gè)本地實(shí)例。

2.membership在sql server中的設(shè)置

要使用membership,需要對(duì)數(shù)據(jù)庫進(jìn)行一些設(shè)置,使用過membership的朋友知道,數(shù)據(jù)庫中有一些固有的表、視圖和存儲(chǔ)過程,我們自己的表中沒有這些東西。
不過,我們可以通過向?qū)韯?chuàng)建它們,那就是aspnet_regsql.exe,一般來說它位于:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(我的就在這里)
它既可以創(chuàng)建數(shù)據(jù)庫中的選項(xiàng),也可以移除這些設(shè)置。
在運(yùn)行這個(gè)程序之前,我在sql server2005中建立了一個(gè)空的數(shù)據(jù)庫:membershipdemo。
建立membershipdemo后,我們運(yùn)行aspnet_regsql.exe,指定membership為membershipdemo。
[attach]34768[/attach]
完成之后,空空的數(shù)據(jù)庫就有很多內(nèi)容了,不過具體的內(nèi)容暫時(shí)不必管。繼續(xù)后面的內(nèi)容。
[attach]34769[/attach]

3.配置web.config

web.config也是要修改的。
在system.web節(jié)點(diǎn)下添加authentication節(jié)點(diǎn)
membership既然是用于成員資格管理,當(dāng)然要求登錄驗(yàn)證身份,所以首先加上一個(gè)forms驗(yàn)證。

CODE:
    <authentication mode="Forms">
      <forms loginUrl="login.aspx" name=".aspxlogin"/>
    </authentication>

同樣在system.web節(jié)點(diǎn)下添加membership節(jié)點(diǎn)

CODE:
        <membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="15" hashAlgorithmType="">
            <providers>
                <clear/>
                <add connectionStringName="ConnectionString" enablePasswordRetri="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </membership>

屬性解釋說明:
defaultProvider:提供程序的名稱。默認(rèn)為 AspNetSqlMembershipProvider。如果你有多個(gè)Provider的話,指定一個(gè)默認(rèn)值是明智的做法
userIsOnlineTimeWindow:指定用戶在最近一次活動(dòng)的日期/時(shí)間戳之后被視為聯(lián)機(jī)的分鐘數(shù)。
hashAlgorithmType:用于哈希密碼的算法的標(biāo)識(shí)符,或?yàn)榭找允褂媚J(rèn)哈希算法。
connectionStringName:membership數(shù)據(jù)庫的連接名稱。
enablePasswordRetri:指示當(dāng)前成員資格提供程序是否配置為允許用戶檢索其密碼。
enablePasswordReset:指示當(dāng)前成員資格提供程序是否配置為允許用戶重置其密碼。
requiresQuestionAndAnswer:指示默認(rèn)成員資格提供程序是否要求用戶在進(jìn)行密碼重置和檢索時(shí)回答密碼提示問題。
applicationName:應(yīng)用程序的名稱。
requiresUniqueEmail:指示成員資格提供程序是否配置為要求每個(gè)用戶名具有唯一的電子郵件地址。
passwordFormat:指示在成員資格數(shù)據(jù)存儲(chǔ)區(qū)中存儲(chǔ)密碼的格式。值可選Clear、Encrypted 和 Hashed。Clear 密碼以明文形式存儲(chǔ),這可以提高存儲(chǔ)和檢索密碼的性能,但安全性較差,當(dāng)數(shù)據(jù)源安全性受到威脅時(shí)此類密碼很容易被讀取。Encrypted 密碼在存儲(chǔ)時(shí)進(jìn)行了加密,可以在比較或檢索密碼時(shí)進(jìn)行解密。此類密碼在存儲(chǔ)和檢索時(shí)需要進(jìn)行額外的處理,但比較安全,在數(shù)據(jù)源的安全性受到威脅時(shí)不容易被獲取。Hashed 密碼在存儲(chǔ)到數(shù)據(jù)庫時(shí)使用單向哈希算法和隨機(jī)生成的 salt 值進(jìn)行哈希處理。在驗(yàn)證某一密碼時(shí),將用數(shù)據(jù)庫中的 salt 值對(duì)該密碼進(jìn)行哈希計(jì)算以進(jìn)行驗(yàn)證。無法檢索哈希密碼。
maxInvalidPasswordAttempts:鎖定成員資格用戶前允許的無效密碼或無效密碼提示問題答案嘗試次數(shù)。
minRequiredPasswordLength:密碼所要求的最小長度。
minRequiredNonalphanumericCharacters:有效密碼中必須包含的最少特殊字符數(shù)。
passwordAttemptWindow:在鎖定成員資格用戶之前允許的最大無效密碼或無效密碼提示問題答案嘗試次數(shù)的分鐘數(shù)。這是為了防止不明來源反復(fù)嘗試來猜測(cè)成員資格用戶的密碼或密碼提示問題答案的額外措施。
passwordStrengthRegularExpression:計(jì)算密碼的正則表達(dá)式。

為membership配置web.config后,再配置其角色管理roleManager
也是在system.web下

CODE:
        <roleManager enabled="true" cacheRolesInCookie="true">
            <providers>
                <clear/>
                <add connectionStringName="ConnectionString" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </roleManager>

屬性解釋說明:
cacheRolesInCookie:指示當(dāng)前用戶的角色是否已緩存在某個(gè) Cookie 中。
當(dāng) CacheRolesInCookie 屬性在配置文件中設(shè)置為 true 時(shí),每個(gè)用戶的角色信息就會(huì)存儲(chǔ)在客戶端上的某個(gè) Cookie 中。當(dāng)角色管理檢查確定某個(gè)用戶是否屬于某個(gè)特定角色時(shí),在調(diào)用角色提供程序在數(shù)據(jù)源中檢查角色列表之前,將先檢查角色 Cookie。該 Cookie 在客戶端上會(huì)動(dòng)態(tài)更新以緩存最近已驗(yàn)證的角色名稱。
web.config就配置差不多了。
真正步入正題。

4.創(chuàng)建用戶CreateUserWizard控件

在vs2005中創(chuàng)建一個(gè)aspx頁面,取名CreateUserWizard.aspx。
直接從toolbox中拖入一個(gè)CreateUserWizard控件,設(shè)置一下FinishDestinationPageUrl屬性,該屬性指示用戶創(chuàng)建完成后,用戶點(diǎn)擊“繼續(xù)”后定向的頁面。

CODE:
         <asp:CreateUserWizard ID="CreateUserWizard1" runat="server" ContinueDestinationPageUrl="~/Default.aspx">
        </asp:CreateUserWizard>


現(xiàn)在不做任何設(shè)置,在vs2005的中design視圖中可以看到

測(cè)試一下先!

提交,出現(xiàn)下面結(jié)果:
[attach]34772[/attach]
所以,正確設(shè)置membership后,注冊(cè)用戶就立馬可以使用了。
這CreateUserWizard的默認(rèn)模板
你也可以自己創(chuàng)建你需要的模板
vs2005可以幫你轉(zhuǎn)換出來
你可以修改一下,轉(zhuǎn)換后就是這樣
代碼會(huì)很多
 

5.用戶登錄login控件

CreateUserWizard可以直接拖出來用,login控件也是一樣。
在頁面中放入一個(gè)login,代碼很簡(jiǎn)單

CODE:
        <asp:Login ID="Login1" runat="server" DestinationPageUrl="~/admin/Default.aspx" PasswordRecoveryText="找回密碼" PasswordRecoveryUrl="PasswordRecovery.aspx">
        </asp:Login>

屬性解釋:
DestinationPageUrl:設(shè)置在登錄嘗試成功時(shí)向用戶顯示的頁面的 URL。
PasswordRecoveryText:設(shè)置密碼恢復(fù)頁鏈接的文本。
PasswordRecoveryUrl:設(shè)置密碼恢復(fù)頁的 URL。如果用戶忘記密碼,可以點(diǎn)擊這個(gè)鏈接點(diǎn)找回他的密碼。
同樣,你也可以自寫模板。

這次先不忙測(cè)試。
等一下后面的控件!

6.顯示當(dāng)前用戶的名稱LoginName控件

這個(gè)控件很簡(jiǎn)單,就是用來呈現(xiàn)用戶名的。

CODE:
<asp:LoginName ID="LoginName1" runat="server" FormatString="您好,{0},您目前的身份是:注冊(cè)用戶" />

如果當(dāng)前登錄的是blueidea,那么顯示的就是“您好,blueidea,您目前的身份是:注冊(cè)用戶”。

7.檢測(cè)用戶的身份驗(yàn)證狀態(tài)的LoginStatus控件

可以說是最簡(jiǎn)單的控件了。

CODE:
<asp:LoginStatus ID="LoginStatus1" runat="server" />

它包含兩種狀態(tài):
1)已登錄到網(wǎng)站。
2)已從網(wǎng)站注銷。
當(dāng)用戶注銷后,會(huì)給出一個(gè)“登錄”的鏈接,用戶可以點(diǎn)擊這個(gè)鏈接來登錄;當(dāng)用戶登錄后,這個(gè)控件會(huì)自動(dòng)轉(zhuǎn)變?yōu)?#8220;注銷”狀態(tài)。

8.為不同類別用戶呈現(xiàn)不同內(nèi)容的LoginView控件

全部登錄控件都可以直接拿來用,不過,這一個(gè)我們來做更多一些東西。

CODE:
            <asp:LoginView ID="LoginView1" runat="server">
                <LoggedInTemplate>
                    <asp:LoginName ID="LoginName1" runat="server" FormatString="您好,{0},您已經(jīng)登錄了。" />
                </LoggedInTemplate>
                <AnonymousTemplate>
                    <asp:Label ID="Label2" runat="server" Text="您尚未登錄,請(qǐng)"></asp:Label><asp:LoginStatus
                        ID="LoginStatus1" runat="server" />
                </AnonymousTemplate>
                <RoleGroups>
                    <asp:RoleGroup Roles="admin">
                        <ContentTemplate>
                            <asp:LoginName ID="LoginName1" runat="server" FormatString="您好,{0},您目前的身份是:管理員" />
                            <br />
                            您可以訪問:<asp:HyperLink ID="HyperLink1" NavigateUrl="User/Default.aspx" runat="server">User/Default.aspx</asp:HyperLink>
                            <br />
                            您也可以訪問:<asp:HyperLink ID="HyperLink2" NavigateUrl="Admin/Default.aspx" runat="server">Admin/Default.aspx</asp:HyperLink>
                            <br />
                            <asp:LoginStatus ID="LoginStatus3" runat="server" />
                        </ContentTemplate>
                    </asp:RoleGroup>
                    <asp:RoleGroup Roles="member">
                        <ContentTemplate>
                            <asp:LoginName ID="LoginName1" runat="server" FormatString="您好,{0},您目前的身份是:注冊(cè)用戶" />
                            <br />
                            您可以訪問<asp:HyperLink ID="HyperLink1" NavigateUrl="User/Default.aspx" runat="server">User/Default.aspx</asp:HyperLink>
                            <br />
                            您不能訪問<asp:HyperLink ID="HyperLink2" NavigateUrl="Admin/Default.aspx" runat="server">Admin/Default.aspx</asp:HyperLink>
                            <br />
                            <asp:LoginStatus ID="LoginStatus2" runat="server" />
                        </ContentTemplate>
                    </asp:RoleGroup>
                </RoleGroups>
            </asp:LoginView>

可以看到,這里包含了三個(gè)模板:LoggedInTemplate、AnonymousTemplate和RoleGroup的模板。
如果定義了LoggedInTemplate模板,那么該用戶會(huì)看到該模板內(nèi)的內(nèi)容,除非該用戶屬于另一個(gè)角色組,且該角色組在已在RoleGroups的模板中的定義。
當(dāng)匿名用戶訪問站點(diǎn)時(shí),AnonymousTemplate內(nèi)的內(nèi)容會(huì)呈現(xiàn)給該用戶。
在前面我們配置的web.config中啟用了角色,我們現(xiàn)在為admin角色定義一個(gè)模板,你可以在上面的代碼中找到。
到現(xiàn)在,我們就可以測(cè)試一下效果了。

可以看到,我們還沒有登錄,AnonymousTemplate的內(nèi)容呈現(xiàn)在我們的面前。而且其中的LoginStatus顯示的狀態(tài)是“登錄”狀態(tài)。
我們登錄一下,前面注冊(cè)了一個(gè)用戶,登錄一下。

LoggedInTemplate沒有起作用,而是member的角色模板起作用,這是因?yàn)?,其?shí)我們?cè)贑reateUserWizard做了設(shè)置,新用戶注冊(cè)以后直接納入member角色組了。
在CreateUserWizard的CreatedUser事件中添加一句簡(jiǎn)單的話:

CODE:
    protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
    {
        Roles.AddUserToRole(CreateUserWizard1.UserName, "member");
    }

再來解釋一下上面的的“你可以訪問……”是什么意思。
在此之前我其實(shí)已經(jīng)添加了兩個(gè)角色:member和admin。
角色添加方法很簡(jiǎn)單:
在vs2005中選擇網(wǎng)站->ASP.NET配置->安全->創(chuàng)建或管理角色
跟上面的的配合,我們添加一個(gè)角色叫“admin”。

再選擇“創(chuàng)建訪問規(guī)則”來創(chuàng)建訪問規(guī)則。
給admin文件創(chuàng)建下面規(guī)則,如圖示:

拒絕member組和匿名用戶,只允許admin組的用戶訪問admin文件夾。
給user文件夾創(chuàng)建如下訪問規(guī)則。

拒絕匿名用戶,允許member組和admin組的用戶。

當(dāng)新注冊(cè)用戶登錄后,它們可以訪問到user文件夾下的文件

但是,如果訪問admin文件夾時(shí)則會(huì)被定向到登錄頁。


9.更改密碼的ChangePassword控件

如果更改密碼,就使用它來修改。

CODE:
        <asp:ChangePassword ID="ChangePassword1" runat="server">
        </asp:ChangePassword>

不需要設(shè)置,就可以修改密碼了。
[attach]34780[/attach]

10.自助找回密碼的PasswordRecovery控件

忘了密碼怎么辦,可以自已找回啦!
不過,在些之前,web.config得另有配置。
在system.web中的同級(jí)節(jié)點(diǎn)創(chuàng)建system.net節(jié)點(diǎn),具體內(nèi)容如下:

CODE:
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network"   from="*@126.com">
        <network defaultCredentials="false" host="smtp.126.com"   password="*"   port="25"   userName="*@126.com"   />
      </smtp>
    </mailSettings>
  </system.net>

我們使用了126的郵箱,其中的用戶名與密碼被省略。
創(chuàng)建PasswordRecovery.aspx,放入PasswordRecovery控件

CODE:
        <asp:PasswordRecovery ID="PasswordRecovery1" runat="server">
        </asp:PasswordRecovery>

測(cè)試:
打開注冊(cè)時(shí)填寫的郵箱就可以看到了。
 
我們就可以使用新的密碼來登錄站點(diǎn)了。

11.總結(jié)

membership在接觸之前,覺得比較神秘,在接觸之后,發(fā)現(xiàn)其實(shí)也不難懂,而且與login系列控件配合得很完美。如果你想要快速搭建一個(gè)用戶管理的平臺(tái),這是一個(gè)不錯(cuò)的選擇,是偷懶者的首選。
如果你嫌MS的控件太難看,也沒有關(guān)系,因?yàn)樗钟卸喾N多樣的模板,通過自定義模板你就能實(shí)現(xiàn)你要看的界面。
不過,membership是設(shè)計(jì)得適合大多數(shù)的情況,所以也是一種萬金油的做法,與你要的功能可能不完全符合,不過,學(xué)習(xí)一下它的做法,學(xué)習(xí)它數(shù)據(jù)庫的設(shè)計(jì),不也是一個(gè)好東西嗎?
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
asp.net 2.0教程 登錄系列控件_阿杜
asp.net2.0安全性(Login系列控件)
考察ASP.NET 2.0Membership,Roles,Profile
用戶權(quán)限設(shè)計(jì)(一)——ASP.NET系統(tǒng)用戶權(quán)限設(shè)計(jì)與實(shí)現(xiàn)【轉(zhuǎn)】
母板頁、用戶控件、視圖狀態(tài)
ASP.NET用戶控件說明和添加事件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服