gpt4 book ai didi

asp.net - 无法在 Asp.Net Identity 中使用 UserManager.RemovePassword() 和 UserManager.AddPassword() 更改密码

转载 作者:行者123 更新时间:2023-12-01 11:29:42 24 4
gpt4 key购买 nike

我使用以下代码来更改用户的密码:

UserManager<ApplicationUser> userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var user = userManager.FindByName(currentUser.LoginName); // currentUser is the currently logged in user
IdentityResult result1 = userManager.RemovePassword(user.Id);
IdentityResult result2 = userManager.AddPassword(user.Id, txtPassword1.Text);

它去年有效。但是今年当我运行它时,它不起作用(完全相同的代码)。当它运行到此语句时:
IdentityResult result1 = userManager.RemovePassword(user.Id);

它给出了以下异常:
{"Cannot insert the value NULL into column 'PasswordHash', table 'xxx.dbo.AspNetUsers'; column does not allow nulls. UPDATE fails.The statement has been terminated."}

我调试到,就在那条语句之前,
user.PasswordHash = 'AAdcuoWRRXqfkB+vWpemPCkFNgWRGGe2tXyeJHy21S8qYYfAo9wJbfqtkog+lk2dZg=='

但在此声明之后, user.PasswordHash变成 null
我真的很困惑。这里有什么问题?

最佳答案

如果您想更改用户密码,请改用此代码:

var validPass= await userManager.PasswordValidator.ValidateAsync(txtPassword1.Text);
if(validPass.Succeeded)
{
var user = userManager.FindByName(currentUser.LoginName);
user.PasswordHash = userManager.PasswordHasher.HashPassword(txtPassword1.Text);
var res= userManager.Update(user);
if(res.Succeeded)
{
// change password has been succeeded
}
}

关于asp.net - 无法在 Asp.Net Identity 中使用 UserManager.RemovePassword() 和 UserManager.AddPassword() 更改密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684488/

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