Почему я не могу войти с недавно отобранным опытным пользователем (Asp. Net Core Identity)? - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть Asp. Net Core 3.1 веб-приложение с Identity. Я использую этот код для заполнения опытного пользователя в базе данных:

var poweruser = new ApplicationUser
{
    UserName = Configuration.GetSection("AppSettings")["UserName"],
    Email = Configuration.GetSection("AppSettings")["UserEmail"],
    FirstName = Configuration.GetSection("AppSettings")["UserFirstName"],
    LastName = Configuration.GetSection("AppSettings")["UserLastName"],
    PhoneNumber = Configuration.GetSection("AppSettings")["UserPhoneNumber"]
};

string userPassword = Configuration.GetSection("AppSettings")["UserPassword"];
var user = await UserManager.FindByEmailAsync(Configuration.GetSection("AppSettings")["UserEmail"]);

if (user == null)
{
    var createPowerUser = await UserManager.CreateAsync(poweruser, userPassword);
    if (createPowerUser.Succeeded)
    {
        await UserManager.AddToRoleAsync(poweruser, "SiteAdmin");
    }
}

В appsettings.json раздел «AppSettings» выглядит следующим образом:

"AppSettings": {
  "UserName": "ab@cd.ef",
  "UserEmail": "ab@cd.ef",
  "UserFirstName": "Admin",
  "UserLastName": "Admin",
  "UserPhoneNumber":  "12345678",
  "UserPassword": "pa5sw&Rd"
}

Пользователь создан в база данных:

enter image description here

Но когда я пытаюсь войти в систему, я получаю неудачную попытку входа. Я видел этот и этот подобный пост, но в этих случаях имя пользователя и адрес электронной почты не были идентичны. В моем случае они (ab@cd.ef). Я скопировал и вставил пароль из appsettings. json, чтобы убедиться, что я не набрал опечатку.

Обновление

Это метод получения формы входа (Войти .cs html .cs):

public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
    returnUrl = returnUrl ?? Url.Content("~/");

    if (ModelState.IsValid)
    {
        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, set lockoutOnFailure: true
        var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
        if (result.Succeeded)
        {
            _logger.LogInformation("User logged in.");
            return LocalRedirect(returnUrl);
        }
        if (result.RequiresTwoFactor)
        {
            return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe });
        }
        if (result.IsLockedOut)
        {
            _logger.LogWarning("User account locked out.");
            return RedirectToPage("./Lockout");
        }
        else
        {
            ModelState.AddModelError(string.Empty, "Invalid login attempt.");
            return Page();
        }
    }

    // If we got this far, something failed, redisplay form
    return Page();
}

1 Ответ

0 голосов
/ 06 апреля 2020

Разве вы не ненавидите, когда решение сложной проблемы оказывается простым?

В этом случае все, что нужно, это установить PhoneNumberConfirmed в true, и я смог войти ...

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