如何修改标准的 ASP.NET MVC 登录页面以允许用户使用电子邮件地址或用户名登录?
最佳答案
+1 到 Sparkle,因为它看起来可行,但我找到了更简单的方法。
在 AccountModel.cs 中更改 Display 属性(只是登录页面上文本框的标签)
public class LogOnModel
{
[Required]
[Display(Name = "User name or Email Address")]
public string UserName { get; set; }
...
在 AccountController.cs 中更改 LogOn 方法以查看用户名是否看起来像电子邮件地址,如果是,则尝试从电子邮件地址中找到用户名。
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
// Can login by username or email address
MembershipUser user = null;
string userName;
if (model.UserName.Contains("@"))
{
// Could change model.userName from email to username but this will change form values
// if login fails (wrong pwd) which will be confusing to users, so keep in sep username string
userName = Membership.GetUserNameByEmail(model.UserName);
if (!String.IsNullOrEmpty(userName))
{
user = Membership.GetUser(userName);
}
}
else
{
user = Membership.GetUser(model.UserName);
userName = model.UserName;
}
if (user != null && validateAndLogOnUser(userName, model.Password, model.RememberMe))
{
// Rest of standard login code here
关于asp.net-mvc-3 - 允许使用用户名或电子邮件地址登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7653902/