Saya juga terjebak dengan ini karena sebagian besar waktu nama pengguna adalah E-mail akhir-akhir ini, saya dapat memahami alasan bidang E-mail terpisah. Ini murni pemikiran / pengalaman saya karena saya juga tidak dapat menemukan pendapat Microsoft tentang hal ini.
Ingat, Asp Identity murni untuk mengidentifikasi seseorang, Anda tidak perlu memiliki E-mail untuk diidentifikasi, tetapi mereka mengizinkan kami untuk menyimpannya karena itu merupakan bagian dari identitas. Saat Anda membuat proyek web baru di studio visual, Anda diberi opsi untuk opsi otentikasi.
Jika Anda memilih jenis proyek yang tidak kosong seperti MVC dan menyetel otentikasi ke "Akun perorangan", Anda akan diberikan dasar-dasar dasar untuk manajemen pengguna. Salah satunya termasuk sub kelas yang terlihat seperti ini dalam 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
}
Hal ini memberitahu kita bahwa Microsoft bermaksud kita untuk menyimpan nama pengguna yang lebih kompleks (lihat AllowOnlyAlphaNumericUserNames = false), jadi sebenarnya kita memiliki sinyal campuran.
Fakta bahwa ini dihasilkan dari proyek web default memberi kita indikasi / arahan yang baik dari Microsoft (dan cara yang bersih) untuk memungkinkan kita memasukkan email untuk bidang nama pengguna. Ini bersih karena metode pembuatan statis digunakan dalam App_Start \ Startup.Auth.cs saat melakukan bootstrap aplikasi dengan konteks Microsoft.OWIN.
Satu-satunya kelemahan dari pendekatan ini adalah Anda akhirnya menyimpan E-mail dua kali .... Yang tidak baik!
((UserValidator<ApplicationUser>) UserManager.UserValidator).AllowOnlyAlphanumericUserNames = false;