Разрешить вход с именем пользователя или адресом электронной почты - PullRequest
3 голосов
/ 05 октября 2011

Как изменить стандартные страницы входа ASP.NET MVC, чтобы пользователь мог войти с адресом электронной почты ИЛИ своим именем пользователя?

Ответы [ 2 ]

4 голосов
/ 15 октября 2011

+ 1 к Sparkle, так как похоже, что это будет работать, но я нашел более простой способ.

В AccountModel.cs изменить атрибут отображения (просто метка текстового поля на странице входа в систему)

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
1 голос
/ 05 октября 2011

Я полагаю, что вам нужно будет сначала разоблачить провайдера, а затем настроить его по своему усмотрению.

Этот урок оказался полезным для раскрытия членства:

http://theintegrity.co.uk/2010/11/asp-net-mvc-2-custom-membership-provider-tutorial-part-1/

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