【问题标题】:ASP .Net Membership (Where control goes on creating new user from config. window?)ASP .Net Membership(控制从配置窗口创建新用户的位置?)
【发布时间】:2012-01-10 05:21:01
【问题描述】:

这是我的 Web.config 文件

<membership>
        <providers>
            <clear />
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="8"  minRequiredNonalphanumericCharacters="0" passwordStrengthRegularExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!%,.;:])|(?=.*[a-z])(?=.*[0-9])(?=.*[!%,.;:])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!%,.;:])$" passwordAttemptWindow="10" applicationName="/" />
        </providers>
    </membership>


这里我想用几个条件限制新用户密码::


密码强度:

  1. 包含来自以下四个类别中的三个类别的字符: 英文大写字符(A 到 Z)
    英文小写字符(a 到 z)
    以 10 位为基数(0 到 9)
    非字母字符(例如,!、$、#、%)
    -
  2. 密码不包含用户的帐户名


如您所见,我在 web.config 部分中使用了 passwordStrengthRegularExpression 属性来匹配第一个条件(会员资格提供)。
需要解决方案来实现第二个条件。


简而言之:: 我需要自定义成员资格以匹配条件(强制执行字符复杂性。即:密码不包含用户的帐户名)

已更新::
我做了 Eranga 在我的申请中建议我做的事情。现在我还想在 Membership createUser 失败时显示适当的消息(在几个自定义条件下)。

【问题讨论】:

  • 我更新了我的问题。看看吧。

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


【解决方案1】:

您可以从默认提供程序继承并处理ValidatingPassword 事件。如果验证不符合您的第二个条件,您可以在此处取消验证。

public class MyMembershipProvider : SqlMembershipProvider 
{
    public MyMembershipProvider()
    {
        ValidatingPassword += ValidatePassword;
    }

    void ValidatePassword(object sender, ValidatePasswordEventArgs e)
    {
         if (e.Password.Contains(e.UserName))
         {
             e.Cancel = true;
             e.FailureInformation = new Exception("blah blah");
         }
    }
}

您的Web.Config 文件应包含以下内容。确保为 type 属性提供自定义成员资格类的全名。

   <membership>
        <providers>
            <clear />
            <add name="MyMembershipProvider" type="MyNamespace.MyMembershipProvider" connectionStringName="ApplicationServices" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="8"  minRequiredNonalphanumericCharacters="0" passwordStrengthRegularExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!%,.;:])|(?=.*[a-z])(?=.*[0-9])(?=.*[!%,.;:])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!%,.;:])$" passwordAttemptWindow="10" applicationName="/" />
        </providers>
    </membership>

【讨论】:

  • 你的意思是自定义成员资格??如何使用 web.config 文件中的子类??
  • @Kannas 是的。它非常简单:)
  • Thanx eranga 我会尝试让您知道它是否适合我。建议我可能需要更改 web.config 吗?
  • @Kannas 更新了我的答案以包括配置更改。
  • @Kannas namespace+class name 喜欢System.Web.Security.SqlMembershipProvider
【解决方案2】:

它不是 MVC,但您可以查看 this example 的覆盖静态事件。另外,由于这基本上是the same question you asked before,稍微详细一点,也许您可​​以更新原始问题?

【讨论】:

    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多