C# ASP.NET标识,需要';强';密码

C# ASP.NET标识,需要';强';密码,c#,asp.net,asp.net-mvc,asp.net-identity,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")]

也许今天早上我的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; }
我还不知道我想做什么密码要求,但可能是最小长度和要求一个小写字母、大写字母和一个数字的组合

你知道我如何做到这一点吗(最好是通过模型属性)?

你可以将与此答案中的规则一起使用:


另一个选项是创建
IIdentityValidator
的实现,并将其分配给
UserManager
PasswordValidator
属性。它只有一个方法,
validateSync
,您可以在其中定义任何类型的密码验证。。我知道,就自动客户端验证而言,这与在模型类中使用属性没有一些相同的优点,但我想我会将其作为任何人的替代方案

e、 g

公共类CustomPasswordValidator:IIdentityValidator
{
public int MinimumLength{get;private set;}
公共int最大长度{get;私有集;}
公共CustomPasswordValidator(int-minimumLength,int-maximumLength)
{
this.MinimumLength=MinimumLength;
此参数。MaximumLength=MaximumLength;
}
公共任务ValidateAsync(字符串项)
{
如果(!string.IsNullOrWhiteSpace(项)
&&item.Trim().Length>=最小长度

&&item.Trim().Length您可以在
App\u Start\IdentityConfig.cs中配置密码要求

// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
    RequiredLength = 4,
    RequireNonLetterOrDigit = false,
    RequireDigit = false,
    RequireLowercase = false,
    RequireUppercase = false,
};

你会使用MembershipProvider吗?使用它,你可以设置PasswordStrengthRegularExpression属性来定义你的密码强度规则-@giacomelli我正在使用新的身份提供程序。除非我错了,否则我认为这不会起作用。我的网站中没有成员资格条目。请仔细考虑。我使用了一组密码当我想要的一个被一个网站拒绝的时候,这真的很烦人,因为它不符合他们的规则,尽管它实际上是一个强大的密码。我现在有一个写下的密码列表,这不是人们想要的,我希望…@simonarcl我完全同意。我正试图弄清楚如何做,但对于我要尝试的应用程序我不想说服我的客户不要设置其他最小字符的限制。我讨厌那些让我使用超出我通常列表范围的奇怪密码的网站。(看着你,各种信用卡公司):)向他们展示:-这是真的!我确实修改了代码,就像你提到的那样,用于
公共静态应用程序管理员创建(…)
在App_Start\IdentityConfig.cs中仅查找(真的)稍后,此Q和实现Identity.Models.RegisterViewModel密码属性的StringLength参数与上面提到的所需长度重叠,因此除非我在这两个位置更改设置,否则不会产生任何影响。如果是此Q和您的AW的组合,我会被卡住。您会在WebForms pr中配置此参数吗项目?是的!这应该是可以接受的答案。在WebForms中,您会在公共静态应用程序SerManager Create(…)中发现此代码有一个小问题。您无法向UserViewModel添加数据批注以强制执行密码规则。为什么在UserViewModel中没有数据批注作为PasswordValidator?
// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
    RequiredLength = 4,
    RequireNonLetterOrDigit = false,
    RequireDigit = false,
    RequireLowercase = false,
    RequireUppercase = false,
};
/*Passwords must be at least min. 8 and max. 16 characters in length, 
minimum of 1 lower case letter [a-z] and 
a minimum of 1 upper case letter [A-Z] and
a minimum of 1 numeric character [0-9] and
a minimum of 1 special character: $ @ $ ! % * ? & + = # 
PASSWORD EXAMPLE : @Password1 
*/
pass = TextBoxPss1.Text;  

Regex regex = new Regex("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&+=#]) [A-Za-z\\d$@$!%*?&+=#]{8,16}$");
    Match match = regex.Match(pass);

    if (match.Success)
    {TextBoxPss1.Text = "OK" }