在 ASP.NET 自带的成员资格中对改用户密码一事搞得很复杂。MembershipUser 有个方法叫 ChangePassword 可以改密码,但要求先输入原密码。如果用户已经忘记了原密码,叫管理员重新设置一个密码,该方法就办不到了。
不输入原密码重设密码的方法有二:
方法一
首先在配置文件中将 enablePasswordReset 设置为 true,requiresQuestionAndAnswer 设置为 false。也就是说允许密码重置,禁止用问题和答案找回密码。关于如何设置,请参见:ASP.NET 成员资格-配置、在 Membership 中为被锁定用户重设密码。
然后是代码:
方法二
这种方法就不用禁用问题和答案了,但它不能想设成哪个密码就设成哪个密码,它的原理是:将数据库中已知的密码的加密字符串更新到要修改密码的用户中。步骤是:
如果我们有多个应用程序在使用同一个库,那么应该先到 aspnet_Applications 中找到相应的应用程序的 ApplicationId,然后在 aspnet_Users 中查找 UserId 时应该把 ApplicationId 也作为 where 条件加进去。
相关阅读