Asp.net Identity 2 kullanıcı adı önceden alınmış doğrulama mesajını nasıl özelleştirebilirim (Name XYZ önceden alınmış durumdadır)? TeşekkürlerAsp.net Identity 2 kullanıcı adı önceden alınmış doğrulama mesajını nasıl özelleştirebilirim?
cevap
Bu soruna herhangi bir basit çözüm bulamadım. Ve basit olarak bir öznitelik/model/denetleyicideki bazı iletileri değiştirmeyi kastediyorum.
olası bir çözüm olabilir:
bunu için Hatalar mülkü kontrol edebilirsiniz başarılı olmadığı sonucu durumda
var result = await UserManager.CreateAsync(user, model.Password);
çalıştırıldıktan sonra "önceden alınmış Adı XYZ." desen ve özel mesaj ile değiştirin.
Başka bir çözüm (bu benim tercih edilen yoldur) özelUserValidation
sınıf yazmaktır
: bir özel biçimi belirleyerek Yani, kullanılan tüm doğrulama hata iletileri Kaynaklar görebilirsiniz
/// <summary>
/// Validates users before they are saved to an IUserStore
/// </summary>
/// <typeparam name="TUser"></typeparam>
public class CustomUserValidator<TUser> : UserValidator<TUser, string>
where TUser : ApplicationUser
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="manager"></param>
public CustomUserValidator(UserManager<TUser, string> manager) : base(manager)
{
this.Manager = manager;
}
private UserManager<TUser, string> Manager { get; set; }
/// <summary>
/// Validates a user before saving
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public override async Task<IdentityResult> ValidateAsync(TUser item)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
var errors = new List<string>();
await ValidateUserName(item, errors);
if (RequireUniqueEmail)
{
await ValidateEmail(item, errors);
}
if (errors.Count > 0)
{
return IdentityResult.Failed(errors.ToArray());
}
return IdentityResult.Success;
}
private async Task ValidateUserName(TUser user, List<string> errors)
{
if (string.IsNullOrWhiteSpace(user.UserName))
{
errors.Add(String.Format(CultureInfo.CurrentCulture, Resources.PropertyTooShort, "Name"));
}
else if (AllowOnlyAlphanumericUserNames && !Regex.IsMatch(user.UserName, @"^[[email protected]_\.]+$"))
{
// If any characters are not letters or digits, its an illegal user name
errors.Add(String.Format(CultureInfo.CurrentCulture, Resources.InvalidUserName, user.UserName));
}
else
{
var owner = await Manager.FindByNameAsync(user.UserName);
if (owner != null && !EqualityComparer<string>.Default.Equals(owner.Id, user.Id))
{
errors.Add(String.Format(CultureInfo.CurrentCulture, Resources.DuplicateName, user.UserName));
}
}
}
// make sure email is not empty, valid, and unique
private async Task ValidateEmail(TUser user, List<string> errors)
{
if (!user.Email.IsNullOrWhiteSpace())
{
if (string.IsNullOrWhiteSpace(user.Email))
{
errors.Add(String.Format(CultureInfo.CurrentCulture, Resources.PropertyTooShort, "Email"));
return;
}
try
{
var m = new MailAddress(user.Email);
}
catch (FormatException)
{
errors.Add(String.Format(CultureInfo.CurrentCulture, Resources.InvalidEmail, email));
return;
}
}
var owner = await Manager.FindByEmailAsync(user.Email);
if (owner != null && !EqualityComparer<string>.Default.Equals(owner.Id, user.Id))
{
errors.Add(String.Format(CultureInfo.CurrentCulture, Resources.DuplicateEmail, email));
}
}
}
senin Bu mesajları özelleştirebileceğiniz kaynaklar.
public class AppUser:IdentityUser
{
public string MyUserName{get; set;}
}
Bir dizgeyi değiştirmek için kendi doğrulayıcıyı uygulamanızın gerekliliği inanılmaz. –
Ve hatalar, yeni bir 'IdentityResult 'oluşturmadan bile hatalarını nasıl değiştirebileceğimi bile göremiyorum, çünkü' Hatalar 'salt okunur IEnumerable'tır. – im1dermike
Bunu denediğimde, '' Kaynaklar '' koruma seviyesi nedeniyle erişilemez '' hatasını alıyorum. Microsoft.AspNet.Identity.Resources sınıfını kontrol edersem dahili olarak işaretlenir. – Ogglas
kolay yolu:
Sen Create
yöntem ApplicationUserManager
sınıfta doğrulayıcı kayıt olabilirsiniz :
private void AddErrors(IdentityResult result)
{
foreach (var error in result.Errors)
{
if (error.StartsWith("Name"))
{
var NameToEmail= Regex.Replace(error,"Name","Email");
ModelState.AddModelError("", NameToEmail);
}
else
{
ModelState.AddModelError("", error);
}
}
}
Sadece bu gibi AddErrors
yöntemi özelleştirmek: gibi ApplicationUser
sınıfa kendi mülkü eklemek
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
manager.UserValidator = new CustomUserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
}
- 1. Ruby on Rails: Doğrulama hata mesajını nasıl özelleştirebilirim?
- 2. Kullanıcı tanımlama bilgisini yenileyin ASP.Net Core Identity
- 3. Doğrulama mesajlarını Laravel'de nasıl özelleştirebilirim?
- 4. "E-posta zaten alınmış" mesajını değiştirin
- 5. Kullanıcı adı Soyadı ve Soyadı bir ASP.NET Kimliğine 2?
- 6. ASP.NET MVC 2'deki doğrulama nasıl çalışır?
- 7. Neden ASP.Net Identity 2, UserId'de bir NVARCHAR'da saklanıyor?
- 8. Asp.net Core'da kullanıcı Tarayıcı adı (kullanıcı aracı) nasıl edinilir?
- 9. Cakephp 2.0 Doğrulama Bence yerine kullanıcı adı
- 10. javascript (istemci tarafı doğrulama) kullanarak ASP.NET özel doğrulama aracının hata mesajını değiştir?
- 11. Glide: Görüntünün önceden önbelleğe alınmış olup olmadığını ve önbelleğe alınmış sürümü nasıl kullanır?
- 12. ASP.NET MVC'de istemci tarafı doğrulama ile 2 değer nasıl karşılaştırılır?
- 13. Asp.net Web api 2 Facebook kullanıcı girişi
- 14. Asp.Net Identity - Çalışma zamanında CookieDomain ayarı
- 15. Doctrine 2 doğrulama
- 16. Entity Framework olmaksızın ASP.NET Identity 2.0 uygulaması
- 17. ASP.NET Identity ve IdentityServer arasındaki fark nedir?
- 18. Asp.net Kimlik Doğrulama Hatası
- 19. HDF'ler erişimi, kullanıcı kimlik doğrulama
- 20. Alan adı sahipliğini doğrulama
- 21. ASP.NET Kimlik 2 - 3
- 22. Jenkins'in çıkışını nasıl özelleştirebilirim?
- 23. FreeTextBox menüsünü nasıl özelleştirebilirim?
- 24. Kimlik doğrulama türleri adlar asp.net vnext
- 25. ASP.net MVC koşullu doğrulama
- 26. ASP.net kullanıcı olarak rol
- 27. ASP.NET MVC, doğrulama özniteliği
- 28. Temel kimlik doğrulama URL'lerinde kullanıcı adı karakterlerinden yararlanma
- 29. Int.net sütunlarıyla ASP.net Identity 2.0 için tablo adları nasıl değiştirilir?
- 30. Asp.net Identity 3.0'daki tablo adları nasıl değiştirilir?
Ben incelerim k Kimlik modeline bir göz atmanız ve bunun için herhangi bir özel özellik olup olmadığını öğrenmeniz gerekir. Veya hesap denetleyicisine – qamar
@qamar bakın. Bu özel durumda, tüm mesajlar Kimlik kaynaklarına gömülü olduğu için yanılıyorsunuz. –