asp.net identity 의 PasswordValidator 를 사용하면 언어가 영문판이다 ㅡㅡ;
이를 custom 해서 한글로 치환하는 방법말곤 없다.
다른 방법이 있으면 댓글로 ~~ ㅎㅎ
이를 사용할려면 IdentityConfig.cs 를 수정해야겠지요?
manager.PasswordValidator = new CustomPasswordValidator
{ }
public class CustomPasswordValidator : PasswordValidator
{
public const int RequiredPasswordLength = 6;
public CustomPasswordValidator()
{
RequiredLength = RequiredPasswordLength;
RequireNonLetterOrDigit = false;
RequireDigit = true;
RequireLowercase = true;
RequireUppercase = false;
}
public override Task<IdentityResult> ValidateAsync(string item)
{
if (item == null) throw new ArgumentNullException("item");
var list = new List<string>();
if (string.IsNullOrWhiteSpace(item) || item.Length < RequiredLength)
{
list.Add(PasswordValidatorCodes.PasswordTooShort);
}
if (RequireNonLetterOrDigit && item.All(IsLetterOrDigit))
{
list.Add(PasswordValidatorCodes.PasswordRequireNonLetterOrDigit);
}
if (RequireDigit && item.All(c => !IsDigit(c)))
{
list.Add(PasswordValidatorCodes.PasswordRequireDigit);
}
if (RequireLowercase && item.All(c => !IsLower(c)))
{
list.Add(PasswordValidatorCodes.PasswordRequireLower);
}
if (RequireUppercase && item.All(c => !IsUpper(c)))
{
list.Add(PasswordValidatorCodes.PasswordRequireUpper);
}
return Task.FromResult(list.Count == 0
? IdentityResult.Success
: new IdentityResult(list));
}
}
public static class PasswordValidatorCodes
{
public const string ErrorCodePrefix = "CustomPassword";
public const string PasswordTooShort = ErrorCodePrefix + "TooShort";
public const string PasswordRequireNonLetterOrDigit = ErrorCodePrefix + "RequireNonLetterOrDigit";
public const string PasswordRequireDigit = ErrorCodePrefix + "RequireDigit";
public const string PasswordRequireLower = ErrorCodePrefix + "RequireLower";
public const string PasswordRequireUpper = ErrorCodePrefix + "RequireUpper";
public static string GetLocalizedMessageForCode(string code)
{
switch (code)
{
case PasswordTooShort:
return string.Format("패스워드 길이를 {0}자 이상 입력해 주세요.", CustomPasswordValidator.RequiredPasswordLength);
case PasswordRequireNonLetterOrDigit:
return "영문자 또는 숫자를 입력해 주세요.";
case PasswordRequireDigit:
return "숫자를 입력해 주세요.";
case PasswordRequireLower:
return "영문 소문자를 입력해 주세요.";
case PasswordRequireUpper:
return "영문 대문자를 입력해 주세요.";
default:
throw new ArgumentException("code");
}
}
}