CheckPasswordASync всегда возвращает false - PullRequest
0 голосов
/ 20 мая 2019

Я создал собственный IdentityUser. Я могу звонить _userManager.FindByNameAsync каждый раз, и он возвращает данные пользователя. После этого, если я позвоню _userManager.CheckPasswordASync, он всегда возвращает false Это странно работает в моей локальной разработке, но не при развертывании на веб-сервере.

пользовательский класс пользователя:

public class CustomUser : IdentityUser
{
    public string FistName { get; set; }
    public string LastName { get; set; }
}

Служба регистрации:

services.AddIdentity<CustomUser, IdentityRole>(
     option =>
            {
              option.Password.RequireDigit = false;
              option.Password.RequiredLength = 6;
              option.Password.RequireNonAlphanumeric = false;
              option.Password.RequireUppercase = false;
              option.Password.RequireLowercase = false;
              option.SignIn.RequireConfirmedEmail = true;
            }
            ).AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

Класс входа в систему:

[Route("login")]
[HttpPost]
public async Task<ActionResult> Login([FromBody] LoginViewModel model)
{
     var user = await _userManager.FindByNameAsync(model.Username);
     var test = await _userManager.CheckPasswordAsync(user, model.Password);

     return Ok(test);
}

1 Ответ

0 голосов
/ 21 мая 2019

Если вы проверяете код класса SignInManager, он выполняет FindByNameAsync для извлечения пользователя.

Идентичность / SRC / Microsoft.AspNet.Identity / SignInManager.cs

    public virtual async Task<SignInResult> PasswordSignInAsync(string userName, string password, 
         bool isPersistent, bool lockoutOnFailure) 
     { 
         var user = await UserManager.FindByNameAsync(userName); 
         if (user == null) 
         { 
             return SignInResult.Failed; 
         } 

         return await PasswordSignInAsync(user, password, isPersistent, lockoutOnFailure);

Так что вам нужно использовать PasswordSignInAsync в этом случае

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