最近はユーザー名がメールであることがほとんどなので、これにもこだわりましたが、別のメールフィールドの理由は理解できます。私はこれについてのマイクロソフトの発言も見つからなかったので、これらは純粋に私の考え/経験です。
Asp Identityは純粋に誰かを識別するためのものであり、識別するために電子メールを持っている必要はありませんが、IDの一部を形成しているため、Eメールを保存できます。Visual Studioで新しいWebプロジェクトを作成すると、認証オプションのオプションが提供されます。
MVCなどの空でないプロジェクトタイプを選択し、認証を「個人アカウント」に設定すると、ユーザー管理の基本的な基盤が与えられます。その1つには、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がより複雑なユーザー名(AllowOnlyAlphaNumericUserNames = falseを参照)を格納するつもりであることを示しているため、実際にはさまざまな信号が混在しています。
これがデフォルトのWebプロジェクトから生成されたという事実は、ユーザー名フィールドに電子メールを入力できるようにするためのMicrosoftからの適切な指示/指示(およびクリーンな方法)を提供します。Microsoft.OWINコンテキストでアプリケーションをブートストラップするときに、静的なcreateメソッドがApp_Start \ Startup.Auth.cs内で使用されるため、問題はありません。
このアプローチの唯一の欠点は、電子メールを2回保存してしまうことです。
((UserValidator<ApplicationUser>) UserManager.UserValidator).AllowOnlyAlphanumericUserNames = false;