問題由來:
Asp.net2.0提供了一組寫好的用戶管理控件,比方說CreateUser,Login等。還是比較好用的,也易於擴展。但是在她的CreateUser裏面有個用戶密碼規則卻一直不知道該怎麼修改。
默認的密碼規則比較複雜:長度必須>7,必須包含一個特殊字符。
解決方法1:通過修改CreateUserWizard.PasswordRegularExpression
通過在網上查詢,發現可能與PasswordRegularExpression有關係。PasswordRegularExpression:是一個正則表達式
於是找了個例子:
<asp:createuserwizard id="Createuserwizard1" runat="server" passwordregularexpression='@/"(?=.{7,)(?=(.*/d){1,)(?=(.*/W){1,)' passwordregularexpressionerrormessage="Your password must be 7 characters long, and contain at least one number and one special character.">
</asp:createuserwizard>
修改,測試之。還是不行。
這樣解決的只是界面上的提醒,與實際Provider的檢查還是不一樣的。即使UI檢查成功,後邊的Provider在寫數據庫的時候依然會給出錯誤提示。
解決方法2 :通過程序修改Provider屬性
又查了一些資料之後,覺得可能要在Provider上下功夫。
於是寫出這樣的代碼:
Membership.Provider.MinRequiredPasswordLength = 4;
Membership.Provider.MinRequiredNonAlphanumericCharacters = 0;
不過,也是失敗,原因是Provider的屬性是ReadOnly的
解決方法3 :修改Webconfig屬性
第三種方法,就是修改Web.Config了,還是修改Provider屬性
<membership>
<providers>
<removename="AspNetSqlMembershipProvider"/>
<addname="AspNetSqlMembershipProvider"type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"connectionStringName="LocalSqlServer"
applicationName="/"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0" />
</providers>
</membership>
成了。
結論
結合這三種修改方法,就可以順利客戶化自己的Membership的密碼規則了。
1:通過Web.Config來修改程序實現的規則
2:通過PasswordRegularExpression實現UI的驗證規則