Использовать адрес электронной почты вместо имени пользователя при проверке подлинности с помощью форм ASP.NET - PullRequest
1 голос
/ 14 января 2011

Я запускаю совершенно новое приложение ASP.NET MVC, используя встроенный шаблон «Интернет-приложение».

Как настроить его, чтобы разрешить вход в систему с использованием адреса электронной почты и пароля вместо имени пользователя и пароля?

Ответы [ 3 ]

1 голос
/ 06 апреля 2011

Если вы используете значение по умолчанию AccountModels, вы также можете изменить LogOnModel, чтобы удалить 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; }
}

Изменить вхождения UserName на Email в вашем представлении LogOn.

Наконец, в вашем AccountController измените действие LogOn, чтобы получить UserName от адреса электронной почты для завершения процесса SignIn, например:это:

[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 голос
/ 27 апреля 2011

у нас есть такое же требование, и мы делаем это, Вы должны создать пользовательскую идентификацию (CustomIdentity: IIdentity, ISerializable)

[Serializable]
public class CustomIdentity : IIdentity, ISerializable

и определите для него свойство Name.

затем для метода get свойства name возвращаем электронное письмо пользователя

    public string Name 
    { 
        get{ return Email; }
    }

если потребуется подробность, пожалуйста, прокомментируйте этот пост

0 голосов
/ 14 января 2011

Разве это не так просто, как использование поля имени в качестве адреса электронной почты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...