在ASP.NET窗体身份validation中更改用户密码
我在C#(ASP.NET)中编码并使用Forms身份validation。
我想知道哪个是更改用户密码的最佳方法,而不使用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
得到了解决。 感谢我的开发人员。
var myUser = Membership.GetUser(userID); bool isChangeSuccess = myUser.ChangePassword( myUser.ResetPassword(), ActivateUserPasswordText.Text.Trim());
不能说我喜欢它很多。
我以为ResetPassword()会返回一个bool。
假设您正在使用ASP.NET安全性。
System.Web.Security.MembershipProvider.ChangePassword
方法
只有密码的哈希值通常由asp.net成员资格提供程序存储,因此无法检索原始密码。 可以通过配置更改此行为,但不建议这样做。
只需要在更改密码时要求用户输入旧密码。 您可以使用User.ChangePassword方法中用户输入的旧密码,它应该可以正常工作。
此成员资格提供程序尚未配置为支持密码检索。
显示上面的消息是因为您的密码格式是盐,因此您无法获取用户的密码。 如果要执行此操作,请更改密码格式,然后重试。
关于某人使用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)
希望这有助于某人