Asp.Net MemberShip 於 Web.config 的相關設定
<!-- ASP.NET MemberShip Provider 設定 -->
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<remove name="AspNetSqlMembershipProvider"/>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="MemberShip_ConnectionString"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""/>
</providers>
</membership>
- 先來說這裡 <membership defaultProvider="AspNetSqlMembershipProvider"> 這裡指說會員管理機制的提供者(Provider)可以有好幾個設定存於此,系統預設是拿名稱為"AspNetSqlMembershipProvider"的會員管理機制設定。
- 再來是providerfr區段裡的標籤了,<remove name="AspNetSqlMembershipProvider"/>的目地是因為web.config會繼承machine.config裡的設定,machine.config裡預設也有一個名叫AspNetSqlMembershipProvider的會員提供者。所以先做移除在套用我們自己同名的會員提供者。
- 接下來是屬性的說明了,
name 是用來做識別用的,同時可能有好幾個會員提供者。
type 包含會員提供者的名稱空間 類名稱 及組件名稱。
connectionStringName 會員提供者一定要依靠資料庫,這個是指定包含有會員資料的資料庫連線字串名稱(就是web.config裡的<connectionStrings>區段的連線字串)。
enablePasswordRetrieval 是否要提供回復原始密碼的功能,但當passwordFormat這個屬性設定為Hashed單向加密的時候此屬性就無法作用了。使用PasswordRecovery 控制項將提供原始密碼。
enablePasswordReset 是否要提供重置密碼的功能,當passwordFormat這個屬性設定為Hashed單向加密的時候,使用PasswordRecovery控制項將會提供新密碼。
requiresQuestionAndAnswer 設定是否必須要提供安全性問題及答案,當此屬性設定為true時,建立使用者的時候就必須要提供安全性問題和答案, 使用PasswordRecovery 控制項也回要求使用者來輸入答案已達到驗證目的。
applicationName 應用程式名稱,達到多個web應用程式都可用同一個資料庫及同一個會員提供者並且不會互相干擾的目的(此屬性對做單一登入的機制很有用!)
requiresUniqueEmail 用來判斷使用者的Email是否為唯一是別不予許重複。
passwordFormat 對密碼加密的格式有Clear、Encrypted 和 Hashed三種。 Clear當然就是以明碼存於資料庫啦,Encrypted 是提供了可還原的加密,Hashed是不可還原的加密。
maxInvalidPasswordAttempts 設定在該時間內(passwordAttemptWindow)嘗試密碼超過指定次數(maxInvalidPasswordAttempts)則會將帳號鎖定。
minRequiredPasswordLength 設定最密碼的最少字串長度。
minRequiredNonalphanumericCharacters 這是指定密碼內最少要有幾個特殊字元(~!@#$%^&*()_+等等..)。
passwordAttemptWindow 設定在該時間內(passwordAttemptWindow)嘗試密碼超過指定次數(maxInvalidPasswordAttempts)則會將帳號鎖定。
passwordStrengthRegularExpression 密碼格式的驗證運算式。
PS: 當passwordStrengthRegularExpression, minRequiredNonalphanumericCharacters, minRequiredPasswordLength設定後,每當建立帳號或變更密碼時就會驗證密碼的格式,如果不符合就會失敗!