我在C#(ASP.NET)中编码并使用Forms身份验证
我想知道在不使用asp:ChangePassword控件的情况下更改用户密码的最佳方法是什么
我不想使用重置密码方法
我只想获取文本框中的密码并将其替换为旧密码
请注意我使用的PasswordFormat是passwordFormat =“Hashed”
一些代码片段会有所帮助
编辑:
在我的web.config中,我设置了enablePasswordRetrieval =“false”
我使用了以下方法
var myUser = Membership.GetUser(userID);
bool isChangeSuccess = myUser.ChangePassword(
myUser.GetPassword(),
ActivateUserPasswordText.Text.Trim());
它给了我错误,
此会员提供商尚未提供 配置为支持密码 检索。
如何解决这些问题呢? 我真的希望我的PasswordFormat能够自己哈希。
的问候,
Naveen Jose
答案 0 :(得分:18)
解决了。感谢我的开发人员。
var myUser = Membership.GetUser(userID);
bool isChangeSuccess = myUser.ChangePassword(
myUser.ResetPassword(),
ActivateUserPasswordText.Text.Trim());
不能说我很喜欢它 我以为ResetPassword()会返回一个bool。
答案 1 :(得分:3)
假设您使用的是ASP.NET安全产品。
答案 2 :(得分:2)
只有密码的哈希值通常由asp.net成员资格提供程序存储,因此无法检索原始密码。可以通过配置更改此行为,但不建议这样做 只需要在更改密码时要求用户输入旧密码。您可以使用User.ChangePassword方法中用户输入的旧密码,它应该可以正常工作。
答案 3 :(得分:1)
此成员资格提供程序尚未配置为支持密码检索。
显示上述消息是因为您的密码格式为salt,因此无法获取用户的密码。如果您想这样做,请更改密码格式,然后重试。
答案 4 :(得分:1)
有人使用ApplicationUser而不是会员资格 - 因为我不想设置会员提供商 - 您可以这样更改密码:
Dim manager = New UserManager()
Dim userChange As ApplicationUser = manager.FindById(IDUser)
userChange.PasswordHash = manager.PasswordHasher.HashPassword(newPassword.Value)
Dim val As Object = manager.Update(userChange)
希望这有助于某人