我有一个使用默认 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 文本时,密码可能会有所不同(例如,%、& 和 < 并不完全是 HTML 安全的)。
我查看了属于 web.config 的“add”元素,但我没有看到任何额外的配置属性,仅在 ResetPassword() 方法中包含某些字符并限制密码长度。
我可以配置 ResetPassword() 方法来限制密码长度并限制它选择的字符集吗?
现在我有一个解决方法:我调用 ResetPassword() 以确保提供的答案是正确的,然后我使用从互联网上下载的RandomPassword 生成器来生成我喜欢的密码(没有模糊字符,HTML 安全,并且只有8 个字符长),然后我在重置用户密码后调用 ChangePassword() 来更改用户密码。
我的解决方法似乎很笨拙,我认为最好配置 ResetPassword() 来做我想做的事。
谢谢~!
科罗拉多技术公司