मैं इसके साथ भी फंस गया था क्योंकि ज्यादातर उपयोगकर्ता नाम इन दिनों ई-मेल हैं, मैं एक अलग ई-मेल क्षेत्र के तर्क को समझ सकता हूं। ये विशुद्ध रूप से मेरे विचार / अनुभव हैं क्योंकि मैं भी इस पर माइक्रोसॉफ्ट का कहना नहीं पा सका।
याद रखें, एस्प की पहचान विशुद्ध रूप से किसी की पहचान करने के लिए है, आपको पहचानने के लिए ई-मेल की आवश्यकता नहीं है, लेकिन वे हमें इसे स्टोर करने की अनुमति देते हैं क्योंकि यह एक पहचान का हिस्सा बनता है। जब आप विज़ुअल स्टूडियो में एक नया वेब प्रोजेक्ट बनाते हैं, तो आपको प्रमाणीकरण विकल्पों के लिए विकल्प दिया जाता है।
यदि आप एक गैर रिक्त प्रोजेक्ट प्रकार जैसे MVC का चयन करते हैं और "व्यक्तिगत खातों" के लिए प्रमाणीकरण सेट करते हैं, तो आपको उपयोगकर्ता प्रबंधन के लिए मूल आधार दिया जाता है। जिनमें से एक में App_Start \ IdentityConfig.cs के भीतर इस तरह दिखने वाली एक सब क्लास शामिल है:
// Configure the application user manager used in this application. UserManager is defined in ASP.NET Identity and is used by the application.
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(IUserStore<ApplicationUser> store)
: base(store)
{
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
// Configure validation logic for usernames
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
}
//N.B rest of code removed
}
यह हमें बताता है कि Microsoft हमें अधिक जटिल उपयोगकर्ता नाम संग्रहीत करने की अनुमति देता है (AllowOnlyAlpNNumericUserNames = false पर देखें), इसलिए वास्तव में हमारे पास मिश्रित संकेत हैं।
यह तथ्य एक डिफ़ॉल्ट वेब परियोजना से उत्पन्न होता है, जो हमें Microsoft (और एक स्वच्छ तरीके) से एक अच्छा संकेत / दिशा देता है जो हमें उपयोगकर्ता नाम फ़ील्ड के लिए ई-मेल दर्ज करने में सक्षम बनाता है। जब Microsoft_OWIN संदर्भ के साथ एप्लिकेशन को बूटस्ट्रैप कर रहा हो, तो यह स्थिर है क्योंकि स्थिर बनाने की विधि का उपयोग App_Start \ Startup.Auth.cs के भीतर किया जाता है।
इस दृष्टिकोण के लिए केवल नीचे की ओर आप दो बार ई-मेल का भंडारण कर रहे हैं .... जो अच्छा नहीं है!
((UserValidator<ApplicationUser>) UserManager.UserValidator).AllowOnlyAlphanumericUserNames = false;