[英]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.