gpt4 book ai didi

entity-framework-5 - ASP.NET 标识 : UserManager. PasswordHasher.VerifyHashedPassword 不断失败

转载 作者:行者123 更新时间:2023-12-01 03:48:32 25 4
gpt4 key购买 nike

我将 ASP.NET Identity 2 与 Entity Framework 5 一起使用(因为我们的 Oracle 数据提供程序不支持 EF6)。由于某种原因通过UserManager.PasswordHasher.VerifyHashedPassword的密码验证不断失败。

我的 UserStore类包含:

    public Task SetPasswordHashAsync(IccmUser user, string passwordHash)
{
IPasswordHasher hasher = new PasswordHasher();

var t = Task.Run(() => {
user.PasswordHash = hasher.HashPassword(passwordHash);
});
return t;
}

(显然是散列的)密码存储在数据库中。因此,这段代码似乎工作得很好。

我的 AccountController密码验证是这样的:
    [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(SignInModel model, string returnUrl)
{
if (ModelState.IsValid) {
// This fails:
//var user = await UserManager.FindAsync(model.UserName, model.Password);

// Thus: do it step by step.
PasswordVerificationResult result = PasswordVerificationResult.Failed;

// Step 1: find user.
IccmUser user = await UserManager.FindByNameAsync(model.UserName);
if (user == null) {
ModelState.AddModelError("", "Couldn't find the user.");
} else {
// Step 2: validate password
result = UserManager.PasswordHasher.VerifyHashedPassword(user.PasswordHash, model.Password);
if (result != PasswordVerificationResult.Success) {
ModelState.AddModelError("", "The password is not valid.");
} else {
// Step 3: sign-in user.
await SignInAsync(user, model.RememberMe);
return Redirect(returnUrl);
}
}
}

// If we got this far, something failed, redisplay form
return View(model);
}
VerifyHashedPassword()在步骤 2 中总是返回 Failed .两个参数( PasswordHashPassword )都正确传入。

任何指向我所缺少的东西的指针都非常感谢。

最佳答案

错误出在 UserStore 实现中。 SetPasswordHashAsync()不应该散列密码。相反,它从 UserManager.CreateAsync() 接收散列密码。 .因此,UserStore 中的以下更改诀窍:

    public Task SetPasswordHashAsync(IccmUser user, string passwordHash)
{
return Task.FromResult(user.PasswordHash = passwordHash);
}

对不起,噪音。

关于entity-framework-5 - ASP.NET 标识 : UserManager. PasswordHasher.VerifyHashedPassword 不断失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24898730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com