c# – Identity – VerifyHashedPassword方法不能正常工作
发布时间:2020-12-15 22:22:11 所属栏目:百科 来源:网络整理
导读:我对ASP.NET Identity和EntityFramework有一个非常奇怪的问题. 我有一个登录表单,我从中收到用户名和密码. 然后我检查用户是否存在于数据库中. 之后,我调用UserManager的方法VerifyHashedPassword来验证来自数据库的用户密码和来自表单的用户密码是否相同.一
我对ASP.NET Identity和EntityFramework有一个非常奇怪的问题.
我有一个登录表单,我从中收到用户名和密码. 然后我检查用户是否存在于数据库中. 之后,我调用UserManager的方法VerifyHashedPassword来验证来自数据库的用户密码和来自表单的用户密码是否相同.一切都很好,但是对于数据库中的一些用户,该方法给出的结果是给定的密码和散列的密码不一样(但实际上是这样).我只是想不通为什么一些用户的密码验证失败了. 这是我的代码. public async Task<User> FindUserAsync(string userName,string password) { User user; if (password != null) { user = await _userManager.FindByNameAsync(userName); if (user == null) { user = await _userManager.FindByEmailAsync(userName); } var result = _userManager.PasswordHasher.VerifyHashedPassword(user.PasswordHash,password); if (!(result == PasswordVerificationResult.Success)) { return null; } } return user; } 解决方法
好吧,问题就在我身边.
当某些用户决定更改密码时出现问题. 实际上我在更改密码时使用了这两种方法: await _userManager.RemovePasswordAsync(appUser.Id); await _userManager.AddPasswordAsync(appUser.Id,fbUser.Password); 现在我手动完成: String hashedNewPassword = _userManager.PasswordHasher.HashPassword(fbUser.Password); if (hashedNewPassword != null) { appUser.PasswordHash = hashedNewPassword; _context.Entry(appUser).State = EntityState.Modified; await _context.SaveChangesAsync(); } 这对我有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |