"インターネットアプリケーション"テンプレートを使用して、新しいASP.NET MVCアプリケーションを開始します。ASP.NETフォーム認証でユーザー名の代わりに電子メールアドレスを使用
電子メールアドレス&のパスワードで、ユーザ名の代わりにパスワード&のパスワードを使用するように設定するにはどうすればよいですか?
"インターネットアプリケーション"テンプレートを使用して、新しいASP.NET MVCアプリケーションを開始します。ASP.NETフォーム認証でユーザー名の代わりに電子メールアドレスを使用
電子メールアドレス&のパスワードで、ユーザ名の代わりにパスワード&のパスワードを使用するように設定するにはどうすればよいですか?
名前フィールドを電子メールアドレスとして使用するのと同じくらい簡単な解決策ではありませんか?
デフォルトAccountModels
を使用している場合は、同様にUserName
を削除して、このように、Email
を追加するLogOnModel
を変更することがありますだけでなく、あなたのLogOn
ビューでUserName
Email
への
public class LogOnModel {
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
変更出現。カスタムを作成する必要があります
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl) {
if (ModelState.IsValid) {
var userName = Membership.GetUserNameByEmail(model.Email);
if (MembershipService.ValidateUser(userName, model.Password)) {
FormsService.SignIn(userName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl)) {
return Redirect(returnUrl);
} else {
return RedirectToAction("Index", "Home");
}
} else {
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
我々は同じ要件を持ち、これを行う、:
あなたAccountController
で最後に
、このように、SignIn
プロセスを完了するために、電子メールアドレスからユーザー名を取得するためにLogOn
アクションを変更ID(CustomIdentity:IIdentity、ISerializable)
[Serializable]
public class CustomIdentity : IIdentity, ISerializable
名前プロパティを定義します。ユーザー
public string Name
{
get{ return Email; }
}
のnameプロパティの戻り電子メールのgetメソッドのために、その後
詳細な情報が必要なことがあれば、そう私はそのことを考えていた
この記事にコメント、私は、ユーザーを使用して維持したい下さいサイトに名前を表示するためのnameプロパティ"Welcome [email protected]"ではなく、 "Welcome User Name"です。 –
@Matt Frear:この目的のために、ユーザーの好みの名前を保存するためにプロファイルプロパティを使用できます。 http://msdn.microsoft.com/en-us/library/d8b58y5d.aspxを参照してください。 – JustinStolle