如何利用 MembershipUser 更改密码
如何利用
MembershipUser
更改密码
作者:
vkvi
来源:千一网络
(原创)
时间:
2009-3-11
完美集成、增强
KindEditor HTML
编辑器
在
ASP.NET
自带的成员资格中对改用户密码一事搞得很复杂。
MembershipUser
有个
方法叫
ChangePassword
可以改密码,但要求先输入原密码。如果用户已经忘记了原密码,
叫管理员重新设置一个密码,该方法就办不到了。
不输入原密码重设密码的方法有二:
方法一
首先在配置文件中将
enablePasswordReset
设置为
true
,
requiresQuestionAndAnswer
设置为
false
。
也就是说允许密码重置,
禁止用问题和答案找
回密码。关于如何设置,
请参见:
ASP.NET
成员资格-配置
、
在
Membership
中为被锁定用
户重设密码
。
然后是代码:
MembershipUser user = Membership.GetUser("
用户名
");
string password = user.ResetPassword(); //
重置一个随机密码
user.ChangePassword(password, "
新密码
"); //
用指定的密码设置
方法二
这种方法就不用禁用问题和答案了,但它不能想设成哪个密码就设成哪个密码,它的
原理是:将数据库中已知的密码的加密字符串更新到要修改密码的用户中。步骤是:
已经丢失密码的用户名叫
cftea
,另外一用户的用户名是
admin
,密码是
1234567
,
我们可以在表
aspnet_Users
中通过用户名找到
cftea
和
admin
的
UserId
。
然后再到表
aspnet_Membership
中通过
UserId
找到
Password
和
PasswordSalt
的值。
把
admin
那个用户对应的
Password
和
PasswordSalt
值更新到
cftea
对应的字
段。
此时
cftea
的密码就和
admin
一样了。
如果我们有多个应用程序在使用同一个库,
那么应该先到
aspnet_Applications
中找
到相应的应用程序的
ApplicationId
,然后在
aspnet_Users
中查找
UserId
时应该把
ApplicationId
也作为
where
条件加进去。