2014-09-16 31 views
5

Bir şifre doğrulayıcı yarattı valideRequireNonLetterOrDigit değil doğru şu şekilde

Şifreler en az bir sigara harf veya rakam karaktere sahip olmalıdır .

hata mesajı

şifre en az bir sigara harfi veya haneli karakterini sahip olacağını öne sürüyor, oldukça belirsizdir. Şey, 3 rakamım var. Öyleyse neyin var?

+0

Eğer RequireNonLetterOrDigit = true kastettiniz? – divega

cevap

10

Mektup olmayan bir harf eklediğimde, bu özelliğin adı ve documentation ikisi de belirsizdir. Bunun olması gerekir:

Parolasının harfi olmayan bir karakter gerektirip gerektirmediğini belirtir.

+0

Bu mantıklı. Teşekkür ederim! – jao

1
public class CustomPasswordValidator : PasswordValidator 
{ 
    public override async Task<IdentityResult> ValidateAsync(string password) 
    { 
     var requireNonLetterOrDigit = base.RequireNonLetterOrDigit; 
     base.RequireNonLetterOrDigit = false; 
     var result = await base.ValidateAsync(password); 

     if (!requireNonLetterOrDigit) 
      return result; 

     if (!Enumerable.All<char>((IEnumerable<char>)password, new Func<char, bool>(this.IsLetterOrDigit))) 
      return result; 

     // Build a new list of errors so that the custom 'PasswordRequireNonLetterOrDigit' could be added. 
     List<string> list = new List<string>(); 
     foreach (var error in result.Errors) 
     { 
      list.Add(error); 
     } 
     // Add our own message: (The default by MS is: 'Passwords must have at least one non letter or digit character.') 
     list.Add("Passwords must have at least one character that is neither a letter or digit. (E.g. '£ $ %^_ etc.')"); 
     result = await Task.FromResult<IdentityResult>(IdentityResult.Failed(string.Join(" ", (IEnumerable<string>)list))); 

     return result; 
    } 
} 
+1

Bazı açıklamalar yararlı olurdu – Anton

İlgili konular