ASP.NET Membership 使用-如何利用 MembershipUser 更改密码

作者:vkvi 来源:ITPOW(原创) 日期:2009-3-11

在 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 条件加进去。

相关阅读

相关文章