问题由来:
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>
<remove name="AspNetSqlMembershipProvider"/>
<add name="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的验证规则