मैं एएसपीनेट पहचान 2 उपयोगकर्ता नाम पहले से ही सत्यापन संदेश कैसे अनुकूलित कर सकता हूं (नाम XYZ पहले ही लिया जा चुका है।)? धन्यवादएएसपीनेट पहचान 2 उपयोगकर्ता नाम पहले से ही सत्यापन संदेश कैसे अनुकूलित कर सकते हैं?
उत्तर
अच्छा, मुझे इस मुद्दे का कोई आसान समाधान नहीं मिला। और सरल से मेरा मतलब है एक विशेषता/मॉडल/नियंत्रक में कुछ संदेश संशोधित करना।
एक संभव समाधान हो सकता है:
को क्रियान्वित करने
var result = await UserManager.CreateAsync(user, model.Password);
मामले में है कि परिणाम आप जाँच कर सकते हैं इसके लिए त्रुटियाँ संपत्ति है सफल नहीं होता है के बाद "नाम XYZ पहले से ही लिया जाता है।" पैटर्न और इसे अपने कस्टम संदेश से प्रतिस्थापित करें।
एक अन्य समाधान (यह मेरा पसंदीदा तरीका है) एक कस्टम UserValidation
वर्ग लिखने के लिए है: इस्तेमाल किया जा रहा में एक कस्टम प्रारूप को निर्दिष्ट करके तो,
/// <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));
}
}
}
आप देख सकते हैं कि सभी मान्यता त्रुटि संदेश संसाधन के लिए अपने संसाधन आप उन संदेशों को कस्टमाइज़ करने में सक्षम होंगे।
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
manager.UserValidator = new CustomUserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
}
यह अविश्वसनीय है कि आपको स्ट्रिंग बदलने के लिए अपने स्वयं के सत्यापनकर्ता को लागू करने की आवश्यकता है। –
और मैं यह भी नहीं देखता कि 'त्रुटि' के बिना त्रुटि संदेश को प्रतिस्थापित कैसे किया जा सकता है क्योंकि 'त्रुटियां' केवल पढ़ने योग्य आईन्यूमेबल है। – im1dermike
यह कोशिश करते समय मुझे त्रुटि मिलती है 'संसाधन' इसके सुरक्षा स्तर के कारण पहुंच योग्य नहीं है। यदि मैं क्लास Microsoft.AspNet.Identity क्लास की जांच करता हूं। स्रोतों को इसे आंतरिक के रूप में चिह्नित किया जाता है। – Ogglas
आसान तरीका ApplicationUser
वर्ग की तरह करने के लिए अपनी खुद की संपत्ति जोड़ने के लिए:
public class AppUser:IdentityUser
{
public string MyUserName{get; set;}
}
बस इस तरह अपने AddErrors
विधि अनुकूलित
आप अपने सत्यापनकर्ता ApplicationUserManager
कक्षा में, रजिस्टर कर सकते हैं Create
विधि :
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);
}
}
}
- 1. लार्वेल में सत्यापन संदेश कैसे अनुकूलित करें?
- 2. आप XPath में एक ही नाम के साथ कई तत्वों की पहचान कैसे कर सकते हैं?
- 3. एएसपीनेट पहचान
- 4. उपयोगकर्ता नाम पहचान का उपयोगकर्ता आईडी 2.0
- 5. स्काइप उपयोगकर्ता नाम सत्यापन
- 6. रेल पर रूबी: सत्यापन त्रुटि संदेश कैसे अनुकूलित करें?
- 7. जेएसएफ सत्यापन त्रुटि संदेश को कैसे अनुकूलित करें
- 8. संदेश की पुष्टि कर सकते हैं
- 9. सी # एएसपीनेट उपयोगकर्ता नाम प्राप्त कर रहा है
- 10. लार्वेल - त्रुटि संदेश वास्तविक त्रुटि संदेश में अनुवाद नहीं कर रहे हैं, "सत्यापन" से शुरू करें।
- 11. सत्यापन विशेषता त्रुटि संदेश को कैसे अनुकूलित करें?
- 12. हम fetch एक्सटेंशन द्वारा उपयोग किए गए डिफ़ॉल्ट प्रतिबद्ध संदेश को कैसे अनुकूलित कर सकते हैं?
- 13. पहचान पुनः सत्यापन
- 14. पुन: निर्देशित ही उपयोगकर्ता पहले
- 15. zendframework 2 inputfilter अनुकूलित डिफ़ॉल्ट त्रुटि संदेश
- 16. उपयोगकर्ता नाम बदलें एएसपीनेट एमवीसी 3 सदस्यता
- 17. एएसपी.नेट पहचान पासवर्ड सत्यापन
- 18. एएसपी.नेट पहचान 2 से 3
- 19. एमवीसी एएसपीनेट पहचान
- 20. एएसपीनेट उपयोगकर्ता
- 21. एएसपीनेट एमवीसी सशर्त सत्यापन
- 22. जेएसएफ 2 i18n बीन सत्यापन संदेश
- 23. कोडइग्निटर फॉर्म सत्यापन का उपयोग कर कस्टम त्रुटि संदेश
- 24. एएसपीनेट एमवीसी 2 नियंत्रक कैसे तत्काल हैं?
- 25. विशेषता सेटर्स से पहले सत्यापन
- 26. कैसे पहले से ही विकल्प
- 27. Directory.Move (फ़ाइल पहले से ही मौजूद हैं)
- 28. एएसपीनेट कोर अनुरोध सत्यापन
- 29. उपयोगकर्ता/डेवलपर संस्करण 2.x के लिए एंड्रॉइड की प्रॉक्सी कॉन्फ़िगरेशन कैसे सेट कर सकते हैं?
- 30. यह जांचना कि क्या उपयोगकर्ता पहले से ही ड्रूपल
मैं पतला के लिए आपको पहचान मॉडल पर एक नज़र डालने की आवश्यकता है और इसके लिए कोई विशेष विशेषता है या नहीं। या खाता नियंत्रक – qamar
@qamar देखें। इस विशेष मामले में आप गलत हैं क्योंकि सभी संदेश पहचान संसाधनों में एम्बेड किए गए हैं –