首页 > 代码库 > 如何利用 MembershipUser 更改密码

如何利用 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 

条件加进去。

如何利用 MembershipUser 更改密码