カスタムサインインマネージャを作成する(MVCでこれを行うにはhttp://www.jamessturtevant.com/posts/ASPNET-Identity2.0-Custom-Database/を参照してください)、MVC(How to login with "UserName" instead of "Email" in MVC Identity?を参照)のこの質問に対する回答を見ると、その答えは恥ずかしいほど簡単です。
手順は次のとおりです。
Register.aspxとLogin.aspxを変更します。
両方のページでUserNameフォームコントロールを作成します。 UserNameフィールドはすでにデータベースに存在しているため、追加する必要はありません。現在の電子メールフォームコントロールをコピーし、コピーをフォームに貼り付けるだけです。新しいフォームコントロールで次のように変更します。
1.変更メールユーザ名にどこでもそれは
2.変更ID = IDを「電子メール」=「ユーザー名」
3.変更TEXTMODE =テキストモードに「メール」=「単一行」
新しいフォームのコントロールに表示されます。 4.次のRequiredFieldValidatorコントロールをコメント化します。
RequiredFieldValidator runat = "server" ControlToValidate = "Email" CssClass = "text-danger" ErrorMessage = "電子メールフィールドは必須です。 Register.aspx.csで
:
変更VARユーザー=新しいApplicationUser(){ユーザー名= Email.Text、メール= Email.Text}。
へのvarユーザー=新しいApplicationUser(){ユーザー名= UserName.Text、メール= string.IsNullOrEmpty(Email.Text)? "[email protected]":Email.Text}; (これはハックのビットですが、それは動作します。)Login.aspx.cs
変更
VAR結果= signinManager.PasswordSignIn(Email.Text、Password.Text、RememberMe.Checkedに
、shouldLockout:false);
var result = signinManager.PasswordSignIn(UserName.Text、Password.Text、RememberMe.Checked、shouldLockout:false); IdentityConfig.cs
変更
RequireUniqueEmail = 真
で
= 偽
RequireUniqueEmail
にあなたは何を意味するのですか?電子メールアドレスはコードを送信することで確認できますが、ユーザ名は他人に知られている可能性があります – derloopkat
真実の電子メールは2段階認証で使用されます。しかし、特定のマーケティングアプリケーションでは、データはPayPalやTargetと同じくらい安全である必要はありません。このような場合、一部のユーザーは、多数のスパムを恐れて自分のメールアドレスを入力する必要があるため、怖がってしまいます。ただし、作成されたユーザー名を入力しても問題ありません。理にかなっている? – noCodeMonkeys