2011-01-14 15 views

答えて

0

名前フィールドを電子メールアドレスとして使用するのと同じくらい簡単な解決策ではありませんか?

+0

この記事にコメント、私は、ユーザーを使用して維持したい下さいサイトに名前を表示するためのnameプロパティ"Welcome [email protected]"ではなく、 "Welcome User Name"です。 –

+1

@Matt Frear:この目的のために、ユーザーの好みの名前を保存するためにプロファイルプロパティを使用できます。 http://msdn.microsoft.com/en-us/library/d8b58y5d.aspxを参照してください。 – JustinStolle

1

デフォルトAccountModelsを使用している場合は、同様にUserNameを削除して、このように、Emailを追加するLogOnModelを変更することがありますだけでなく、あなたのLogOnビューでUserNameEmailへの

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); 
} 
1

我々は同じ要件を持ち、これを行う、:

あなた AccountControllerで最後に

、このように、SignInプロセスを完了するために、電子メールアドレスからユーザー名を取得するためにLogOnアクションを変更ID(CustomIdentity:IIdentity、ISerializable)

[Serializable] 
public class CustomIdentity : IIdentity, ISerializable 

名前プロパティを定義します。ユーザー

public string Name 
    { 
     get{ return Email; } 
    } 

のnameプロパティの戻り電子メールのgetメソッドのために、その後

詳細な情報が必要なことがあれば、そう私はそのことを考えていた

関連する問題