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

作者:vkvi 来源:千一网络(原创) 日期: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 条件加进去。

相关阅读

你前面那位网友看了:多线程与异步-异步调用 Web Service

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
标题:必填
内容:
本站永远终止与捏造“罪名”不支付广告费的某度联盟合作。
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他