led*_*per 39 c# asp.net asp.net-mvc asp.net-identity
也许今天早上我的googlin技能不是很好,但我似乎无法找到如何使用个人用户帐户使用新的asp.net mvc5项目设置不同的密码要求(而不是最小/最大长度).
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
Run Code Online (Sandbox Code Playgroud)
我不知道我想要做什么密码要求,但可能是最小长度和需要一个小写,大写字母和数字的组合.
知道我怎么能做到这一点(最好是通过模型属性)?
Ser*_*ets 109
您可以在中配置密码要求 App_Start\IdentityConfig.cs
// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 4,
RequireNonLetterOrDigit = false,
RequireDigit = false,
RequireLowercase = false,
RequireUppercase = false,
};
Run Code Online (Sandbox Code Playgroud)
另一种选择是创建一个实现IIdentityValidator<string>并将其分配给您的PasswordValidator属性UserManager.它只有一种方法,ValidateAsync你可以在那里定义你喜欢的任何类型的密码验证.我知道这与使用模型类中的属性没有一些相同的优点,就自动客户端验证而言,我想我会把它作为替代任何人的替代品.
例如
public class CustomPasswordValidator : IIdentityValidator<string>
{
public int MinimumLength { get; private set; }
public int MaximumLength { get; private set; }
public CustomPasswordValidator(int minimumLength, int maximumLength)
{
this.MinimumLength = minimumLength;
this.MaximumLength = maximumLength;
}
public Task<IdentityResult> ValidateAsync(string item)
{
if (!string.IsNullOrWhiteSpace(item)
&& item.Trim().Length >= MinimumLength
&& item.Trim().Length <= MaximumLength)
return Task.FromResult(IdentityResult.Success);
else return Task.FromResult(IdentityResult.Failed("Password did not meet requrements."));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22079 次 |
| 最近记录: |