ASP.net Membership角色與許可權管理(一)
本文目錄:
1.membership簡介
2.membership在sql server中的設定
3.配置web.config
4.建立使用者CreateUserWizard控制項
5.使用者登入login控制項
6.顯示目前使用者的名稱LoginName控制項
7.檢測使用者的身分識別驗證狀態的LoginStatus控制項
8.為不同類別使用者呈現不同內容的LoginView控制項
9.更改密碼的ChangePassword控制項
10.自助找回密碼的PasswordRecovery控制項
11.總結
1.membership簡介
membership,真的很有趣,很方便,很有用。介紹給大家。
在 ASP.NET 應用程式中,Membership 類用於驗證使用者憑證並系統管理使用者設定(如密碼和電子郵件地址)。Membership 類可以獨自使用,或者與 FormsAuthentication 一起使用,以建立一個完整的 Web 應用程式或網站的使用者身分識別驗證系統。Login 控制項封裝了 Membership 類,從而提供一種便捷的使用者驗證機制。
Membership 類提供的功能可用於:
1)建立新使用者。
2)將成員資格資訊(使用者名稱、密碼、電子郵件地址及支援資料)儲存在 Microsoft SQL Server 或其他類似的資料存放區區。
3)對訪問網站的使用者進行身分識別驗證。可以以編程方式對使用者進行身分識別驗證,也可以使用 Login 控制項建立一個只需很少代碼或無需代碼的完整的身分識別驗證系統。
4)管理密碼。包括建立、更改、檢索和重設密碼等等。可以選擇配置 ASP.NET 成員資格以要求一個密碼提示問題及其答案來對忘記密碼的使用者的密碼重設和檢索請求進行身分識別驗證。
預設情況下,ASP.NET 成員資格可支援所有 ASP.NET 應用程式。預設成員資格提供者為 SqlMembershipProvider 並在電腦配置中以名稱 AspNetSqlProvider 指定。SqlMembershipProvider 的預設執行個體配置為串連到 Microsoft SQL Server 的一個本地執行個體。
2.membership在sql server中的設定
要使用membership,需要對資料庫進行一些設定,使用過membership的朋友知道,資料庫中有一些固有的表、視圖和預存程序,我們自己的表中沒有這些東西。不過,我們可以通過嚮導來建立它們,那就是aspnet_regsql.exe,一般來說它位於:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(我的就在這裡)
它既可以建立資料庫中的選項,也可以移除這些設定。
在運行這個程式之前,我在sql server2005中建立了一個空的資料庫:membershipdemo。建立membershipdemo後,我們運行aspnet_regsql.exe,指定membership為membershipdemo。
3.配置web.config
web.config也是要修改的。在system.web節點下添加authentication節點。
membership既然是用於成員資格管理,當然要求登入驗證身份,所以首先加上一個forms驗證。
1 <authentication mode="Forms">
2 <forms loginUrl="login.aspx" name=".aspxlogin"/>
3 </authentication>
同樣在system.web節點下添加membership節點。
1 <membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="15" hashAlgorithmType="">
2 <providers>
3 <clear/>
4 <add connectionStringName="ConnectionString" enablePasswordRetrieval="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"/>
5 </providers>
6 </membership>
屬性解釋說明:
defaultProvider:提供者的名稱。預設為 AspNetSqlMembershipProvider。如果你有多個Provider的話,指定一個預設值是明智的做法
userIsOnlineTimeWindow:指定使用者在最近一次活動的日期/時間戳之後被視為聯機的分鐘數。
hashAlgorithmType:用於雜湊密碼的演算法的標識符,或為空白以使用預設雜湊演算法。connectionStringName:membership資料庫的串連名稱。
enablePasswordRetrieval:指示當前成員資格提供者是否配置為允許使用者檢索其密碼。
enablePasswordReset:指示當前成員資格提供者是否配置為允許使用者重設其密碼。
requiresQuestionAndAnswer:指示預設成員資格提供者是否要求使用者在進行密碼重設和檢索時回答密碼提示問題。
applicationName:應用程式的名稱。
requiresUniqueEmail:指示成員資格提供者是否配置為要求每個使用者名稱具有唯一的電子郵件地址。
passwordFormat:指示在成員資格資料存放區區中儲存密碼的格式。值可選Clear、Encrypted 和 Hashed。Clear 密碼以明文形式儲存,這可以提高儲存和檢索密碼的效能,但安全性較差,當資料來源安全性受到威脅時此類密碼很容易被讀取。Encrypted 密碼在儲存時進行了加密,可以在比較或檢索密碼時進行解密。此類密碼在儲存和檢索時需要進行額外的處理,但比較安全,在資料來源的安全性受到威脅時不容易被擷取。Hashed 密碼在儲存到資料庫時使用單向雜湊演算法和隨機產生的 salt 值進行雜湊處理。在驗證某一密碼時,將用資料庫中的 salt 值對該密碼進行雜湊計算以進行驗證。無法檢索雜湊密碼。
maxInvalidPasswordAttempts:鎖定成員資格使用者前允許的無效密碼或無效密碼提示問題答案嘗試次數。
minRequiredPasswordLength:密碼所要求的最小長度。
minRequiredNonalphanumericCharacters:有效密碼中必須包含的最少特殊字元數。
passwordAttemptWindow:在鎖定成員資格使用者之前允許的最大無效密碼或無效密碼提示問題答案嘗試次數的分鐘數。這是為了 防止不明來源反覆嘗試來猜測成員資格使用者的密碼或密碼提示問題答案的額外措施。
passwordStrengthRegularExpression:計算密碼的Regex。
為membership配置web.config後,再配置其角色管理roleManager,也是在system.web下。
1 <roleManager enabled="true" cacheRolesInCookie="true">
2 <providers>
3 <clear/>
4 <add connectionStringName="ConnectionString" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
5 </providers>
6 </roleManager>
屬性解釋說明:
cacheRolesInCookie:指示目前使用者的角色是否已緩衝在某個 Cookie 中。
當 CacheRolesInCookie 屬性在設定檔中設定為 true 時,每個使用者的角色資訊就會儲存在用戶端上的某個 Cookie 中。當角色管理檢查確定某個使用者是否屬於某個特定角色時,在調用角色提供者在資料來源中檢查角色列表之前,將先檢查角色 Cookie。該 Cookie 在用戶端上會動態更新以緩衝最近已驗證的角色名稱。
web.config就配置差不多了。
真正步入正題。
4.建立使用者CreateUserWizard控制項
在vs2005中建立一個aspx頁面,取名CreateUserWizard.aspx。直接從toolbox中拖入一個CreateUserWizard控制項,設定一下FinishDestinationPageUrl屬性,該屬性指示使用者建立完成後,使用者點擊“繼續”後定向的頁面。
1 <asp:CreateUserWizard ID="CreateUserWizard1" runat="server" ContinueDestinationPageUrl="~/Default.aspx">
2 </asp:CreateUserWizard>