【问题标题】:How to compare password with username in asp.net membership?如何在asp.net会员中将密码与用户名进行比较?
【发布时间】:2012-01-09 11:52:19
【问题描述】:

在创建具有 ASP.NET 成员资格的用户之前,如何确保输入的密码与输入的用户名不匹配?

更新:

我尝试过设置这个(在 web.config 文件提供程序部分):

passwordStrengthRegularExpression = "^(?:(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!%,.;:])|(?=.*[a-z])(?=.*[0-9])(?=.*[!%,.;:])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!%,.;:]))(?i)(?!.*" + Username + ").+$";

但是恐怕将它与这样的用户名进行比较在会员资格中不起作用。

我还认为我可以通过一些自定义验证来装饰AccountModelRegisterModel 类的Password 属性。

无论哪种方式,我都感到困惑并需要建议。

【问题讨论】:

  • 如果您想要一个直接的答案,您必须提供一些代码来显示创建帐户的机制。

标签: asp.net asp.net-mvc asp.net-membership


【解决方案1】:

这不是一个直接的答案,但是如果您在MembershipProvider 配置中设置了最低密码复杂度要求,那么这种可能性应该很小。

这是在以下 web.config 块中完成的(例如):

<membership>
    <providers>
        <clear/>
        <add connectionStringName="xxx" 
             requiresQuestionAndAnswer="false" 
             maxInvalidPasswordAttempts="5" 
             minRequiredPasswordLength="8" 
             minRequiredNonalphanumericCharacters="1" 
             passwordAttemptWindow="5" 
             passwordStrengthRegularExpression="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$" 
             applicationName="/" 
             name="AspNetSqlMembershipProvider" 
             type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </providers>      
</membership>

【讨论】:

  • 我已经准备好使用我的正则表达式了,这里是 "^(?:(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9] )|(?=.*[a-z])(?=.*[A-Z])(?=.*[!%,.;:])|(?=.*[a-z])(?=.*[ 0-9])(?=.*[!%,.;:])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!%,. ;:]))(?i)(?!.*" + 用户名 + ").+$";但我担心像这样比较用户名是否适用于会员资格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 2011-03-09
  • 1970-01-01
  • 2021-09-27
相关资源
最近更新 更多