这是我的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>
在这里,我想限制几个条件的新用户密码::
密码强度:
正如您所看到的,我在web.config部分中使用了passwordStrengthRegularExpression属性来匹配第一个条件(该成员资格提供)。
需要解决方案才能达到第二个条件。
简而言之 ::我需要自定义成员资格以匹配条件(强制执行字符复杂性。即:密码不包含用户的帐户名称)
的更新::
我在申请时做了Eranga给我的建议。现在我还想在Membership createUser失败时显示相应的消息(在几个自定义条件下)。
答案 0 :(得分:3)
您可以从默认提供程序中子类并处理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>
答案 1 :(得分:1)
这不是MVC,但您可以查看覆盖静态事件的this example。此外,由于这基本上是the same question you asked before,稍微详细一点,或许你可能刚刚更新了原始问题?