2016-04-08 3 views
0

これは、以前の質問のより具体的な投稿です。私はこの問題についての回答で多くの投稿を見ており、質問に答えた人にはは働いていません。WebフォームでのASP.NET IDの使用 - 電子メールではなくユーザー名で検証する方法

質問:.NET IDを使用すると、デフォルトの電子メールアドレスではなく、Webフォーム(MVCではなく)で検証するためにユーザー名を使用する方法があります。私はいくつかのコードを投稿することができますが、正直なところ、どのクラスやメソッドを投稿するのかは正確には分かりません。

あなたがこの質問にお答えすることができれば、誰もそれを理解できないためです。

+0

RequireUniqueEmail
にあなたは何を意味するのですか?電子メールアドレスはコードを送信することで確認できますが、ユーザ名は他人に知られている可能性があります – derloopkat

+0

真実の電子メールは2段階認証で使用されます。しかし、特定のマーケティングアプリケーションでは、データはPayPalやTargetと同じくらい安全である必要はありません。このような場合、一部のユーザーは、多数のスパムを恐れて自分のメールアドレスを入力する必要があるため、怖がってしまいます。ただし、作成されたユーザー名を入力しても問題ありません。理にかなっている? – noCodeMonkeys

答えて

1

カスタムサインインマネージャを作成する(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 =


=

関連する問題