【发布时间】:2010-04-02 16:39:31
【问题描述】:
我有一个使用默认 Sql MembershipProvider 的 C# asp.net 应用程序。我的 web.config 有一些设置可以控制我如何使用这个 Provider:
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresUniqueEmail="true"
passwordFormat="Hashed"
minRequiredPasswordLength="5"
我遇到的问题是,当人们重置密码时,ResetPassword() 方法返回的密码似乎比我想要的长,并且包含可能令人困惑的字符(l、1、i、I、 0,O)。此外,我正在向我的用户发送一封带有纯文本消息和 HTML 消息的电子邮件(我正在使用带有 AlternateViews 的 MailMessage)。如果密码中包含不安全的 HTML 字符,则当电子邮件客户端呈现 HTML 文本时,密码可能会有所不同(例如,%、& 和
我查看了属于 web.config 的“add”元素,但我没有看到任何额外的配置属性,仅在 ResetPassword() 方法中包含某些字符并限制密码长度。
我可以配置 ResetPassword() 方法来限制密码长度并限制它选择的字符集吗?
现在我有一个解决方法:我调用 ResetPassword() 以确保提供的答案是正确的,然后我使用我从互联网上下载的RandomPassword generator 生成我喜欢的密码(没有模棱两可的字符,HTML安全,并且只有 8 个字符长),然后我在重置后调用 ChangePassword() 来更改用户的密码。
我的解决方法似乎很笨拙,我认为最好配置 ResetPassword() 来做我想做的事。
谢谢~!
科罗拉多技术
【问题讨论】:
-
到目前为止,您对
RandomPassword generator有很好的体验吗?我也在寻找这样的东西,因为我从来没有找到配置ResetPassword的方法。 -
我个人喜欢它,但是我们还没有完成我们的应用程序的构建,所以我不确定它在生产中的情况。现在我调用它两次(newPassword = RandomPassword.Generate(7) + RandomPassword.Generate(1); )因为我希望我的新密码以一个字符开头和结尾(如果您阅读 cmets,代码将始终生成以字符开头的密码)。我也喜欢如何限制特殊字符。
-
需要注意的一点:我不知道 MembershipProvider 是否会限制您频繁更改密码,因此如果您重置他人的密码然后更改密码,您可能需要增加数字人们能够更改密码的次数。
标签: asp.net passwords reset sqlmembershipprovider