随心所欲

做个幸福的人
posts - 147, comments - 1402, trackbacks - 28, articles - 0
  博客园 :: 首页 :: 新随笔 ::  :: 订阅 订阅 :: 管理

问题由来

Asp.net2.0提供了一组写好的用户管理控件,比方说CreateUserLogin等。还是比较好用的,也易于扩展。但是在她的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的验证规则

Feedback

#1楼    回复  引用  查看    

2007-03-09 13:57 by Jeffrey Zhao      
我在想,web.config里的配置会直接影响CreateUserWizard控件的客户端验证吗?

#2楼 [楼主]   回复  引用  查看    

2007-03-09 15:12 by 随心所欲      
@Jeffrey Zhao
can not

#3楼 [楼主]   回复  引用  查看    

2007-03-09 16:31 by 随心所欲      
@iCaca
怎么设置?
CreateUserWizard是通过js来检查输入的,Web.Config可以配置她的正则表达式么?

#4楼 [楼主]   回复  引用  查看    

2007-03-09 16:45 by 随心所欲      
@iCaca
这个修改会直接影响到js的实现?还是说js会根据这个设置作出反应?

#5楼    回复  引用  查看    

2007-03-09 16:49 by iCaca      
@随心所欲
sorry 是我看错了

#6楼    回复  引用    

2007-03-09 18:31 by 不懂 [未注册用户]
当然是在web.config里面能够直接控制必须输入密码的长度和特殊字符的个数的,没搞清楚就不要在这里瞎叫.

#7楼    回复  引用    

2007-03-09 18:58 by zzw [未注册用户]
在vs2005中默认使用的数据库是server 2005,要在server 2000中使用这些个性化控件及新特性控件怎么办,大概要在那些地方进行修改.

#8楼    回复  引用    

2007-03-09 19:29 by uphee [未注册用户]
默认的connectionStringName为"LocalSqlServer" 。
简单的,用HTTP方式创建网站(或者为已创建的WEB应用配置虚拟目录),这样可以在IIS里更改连接字符串。
就像平时写连接串一样。
右键虚拟目录->属性->ASP.NET选项卡->编辑配置->常规选项卡,你会看到“连接字符串管理器”,你修改就可以了。

#9楼    回复  引用  查看    

2007-03-09 21:12 by iCaca      
记得要运行一下 framework下面的aspnet_regsql.exe 然后选一下数据库

#10楼    回复  引用  查看    

2007-03-09 21:55 by Cat Chen      
通常的做法:
1.添加一个Provider,按照你喜欢的去配置属性
2.制定它为DefaultProvider

就这么简单,其他东西都不需要动,也保持最大兼容性。

#11楼    回复  引用  查看    

2007-03-09 21:56 by Cat Chen      
只要DefaultProvider设置过去了,所有控件的要求会跟着走的,不用担心那么多。DefaultProvider其实只是一个配置名称,至于那个配置用什么Provider类,如何设置属性,随你喜欢。

#12楼 [楼主]   回复  引用  查看    

2007-03-09 22:55 by 随心所欲      
@不懂
技术交流,不做情绪之争。

#13楼 [楼主]   回复  引用  查看    

2007-03-09 22:56 by 随心所欲      
@iCaca
也谢谢你的测试和反馈。

#14楼 [楼主]   回复  引用  查看    

2007-03-09 22:58 by 随心所欲      
@Cat Chen
谢谢指教。
只是客户催,来不及客户化那么多了。这个问题早就有了,不着急就是查不出来,呵呵。

#15楼    回复  引用    

2008-01-11 08:52 by lizhen302 [未注册用户]
谢谢楼主的提示

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接:
 
Google