- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 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
.两个参数(
PasswordHash
和
Password
)都正确传入。
最佳答案
错误出在 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/
我在使用 ASP.NET Identity 和 EntityFramework 时遇到了非常奇怪的问题。我有一个登录表单,我从中收到用户名和密码。然后我检查用户是否存在于数据库中。之后,我调用 Use
Usermanager.VerifyHashedPassword结果何时会是PasswordVerificationResult.SuccessRehashNeeded? 出现这样的结果怎么办? 使用
我将 ASP.NET Identity 2 与 Entity Framework 5 一起使用(因为我们的 Oracle 数据提供程序不支持 EF6)。由于某种原因通过UserManager.Pass
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
当我运行我的代码时,这里发生错误。有人可以帮我解决这个问题吗?我是 MVC 的新手。谢谢。 public ActionResult Login(AspNetUser user) {
我是一名优秀的程序员,十分优秀!