2009-01-09 75 views
10

是否可以控制通过调用MembershipUser.ResetPassword()自动生成的密码的格式?如何控制格式MembershipUser.ResetPassword()

我希望能够允许或不允许生成的密码中的某些特殊字符。

我正在使用带有哈希密码格式的SqlMembershipProvider。

谢谢。

+0

你为什么要限制特殊字符?这几乎没有可靠的理由,而且非常不友好。 – 2009-01-09 02:46:42

+1

@John Sheehan:另一方面,我从用户那里得到的抱怨是,生成的密码中包含'很难找到'的字符。尝试告诉(非程序员)用户找到|或键盘上的〜键。消除难以打字的角色可以被认为是一种用户友好的举动。当然,你可以告诉用户复制粘贴密码,但我也遇到过阻力。 – 2010-07-08 16:40:15

回答

1

看看这篇文章 - Changing the autogenerated password format in the SqlMembershipProvider

我想出了一个快速的方法来破解的SqlMembershipProvider产生不太复杂的密码,这是为创建一个从SqlMembershipProvider的继承一个新的供应商类,然后重写GeneratePassword方法一样简单。

这不是一个完全解决的解决方案,但它可能有所帮助。

0

我希望有一些配置设置可以使用,但是重写GeneratePassword()方法适用于我的情况。

我们已经有了一个加密工具类,它会生成随机密码字符串,所以它是一个非常快速的变化。

2

今天,你还可以使用Membership.GeneratePassword方法并传递一个MinRequiredPasswordLength或使用Web.config中已经定义是这样的属性:

var newPassword = 
        // 0 = Number of non alphanumeric characters 
        Membership.GeneratePassword(Membership.MinRequiredPasswordLength, 0); 

    user.ChangePassword(user.ResetPassword(), newPassword); 
相关问题