ASP.NET Core: как войти в систему с «UserName» вместо «Email»? - PullRequest
1 голос
/ 20 апреля 2019

В ядре asp.net все страницы входа, модели просмотра и т. Д. Скрыты в ссылочных пакетах, поэтому их нельзя изменить напрямую. Как мне разрешить вход в систему по-прежнему использовать имена пользователей и не заставлять использование электронной почты?

Ответы [ 2 ]

2 голосов
/ 22 апреля 2019

Первый шаг - создать личность для вашего приложения:

Удостоверение лесов в проектах ASP.NET Core

Затем вы можете настроить Register.cshtml / Register.cshtml.cs и Login.cshtml / Login.cshtml.cs, обновить модель и вид и изменить логику в функции OnPostAsync в соответствии с вашими требованиями.

По вашему требованию вы можете выполнить следующие шаги:

  1. Идентификация лесов в вашем проекте.
  2. Измените Register.cshtml.cs, добавьте имя пользователя к InputModel:

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "User Name")]
    public string UserName { get; set; }
    
  3. Измените метод OnPostAsync:

    var user = new IdentityUser { UserName = Input.UserName, Email = Input.Email };
    
  4. Обновите Register.cshtml, указав имя пользователя:

    <div class="form-group">
        <label asp-for="Input.UserName"></label>
        <input asp-for="Input.UserName" class="form-control"/>
        <span asp-validation-for="Input.UserName" class="text-danger"></span>
    </div>
    
  5. Измените Register.cshtml.cs, измените InputModel, чтобы заменить Email для UserName:

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "User Name")]
    public string UserName { get; set; }
    
  6. Изменить Register.cshtml:

    <div class="form-group">
        <label asp-for="Input.UserName"></label>
        <input asp-for="Input.UserName" class="form-control" />
        <span asp-validation-for="Input.UserName" class="text-danger"></span>
    </div>
    

По умолчанию ASP.NET Identity использует FindByNameAsync, чтобы проверить, существует ли пользователь с данным именем, поэтому вам не нужно переопределять функцию PasswordSignInAsync в SignInManager. Если вы хотите войти по электронной почте, вы можете нажать здесь , чтобы обновить его.

0 голосов
/ 20 апреля 2019

Посмотрите страницы Pages -> Login.cshtml (Здесь вы получите класс с именем Login.cshtml.cs).Внутри этого класса вы получите метод с именем «OnPostAsync»

Изменение внешнего интерфейса на «лайки»

enter image description here

И внутри вашего логина.Класс cshtml.cs 'изменить этот метод с вашей целевой Dashboard / Index url ..

 public async Task<IActionResult> OnPostAsync()
    {
        if (ModelState.IsValid)
        {
            var validated = _ADService.Validate(new NetworkCredential(LoginData.UserId, LoginData.Password));
            if (validated)
            {
                if (await _identityService.SignInAsync(HttpContext, LoginData.UserId))
                {

              //   return Redirect("Index");
                   return Redirect("../app/bootstrap.html");

                }

                ModelState.AddModelError("", "account does not exist in system!");
                return Page();
            }

            ModelState.AddModelError("", "userid or password is invalid!");
            return Page();
        }
        else
        {
            ModelState.AddModelError("", "userid or password is blank!");
            return Page();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...