繁体   English   中英

CheckPasswordASync始终返回false

[英]CheckPasswordASync returns false always

我已经创建了一个自定义的IdentityUser。 我每次都可以调用_userManager.FindByNameAsync并返回用户详细信息。 在此之后,如果我调用_userManager.CheckPasswordASync它总是返回false。 它奇怪地在我的localhost开发中工作正常,但在部署到Web服务器时却没有。

自定义用户类:

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);
}

如果您检查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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM