18

我一直在使用 MVC4 Internet 模板编写一个 Web 应用程序。我真的不需要任何复杂的用户管理,所以我选择了默认的 SimpleMembershipProvider。我正在初始化 App_Start 中的成员资格,并且我已经设置并工作了角色和用户。我没有使用 SSO 或任何其他 OAuth 功能。现在我有一个忘记密码的测试人员,在谷歌搜索了一整天后,我意识到我不知道如何重置他的密码或更改密码!

我通读了文档,发现使用 SimpleMembership 时不支持ResetPassword 功能。我的问题是,我该怎么做:

  1. 从 SimpleMembership 切换到使用 SimpleMembership 表和格式的标准成员资格
  2. 将用户密码重置为我指定的密码?

我发现 web.config 设置(理论上)将成员资格提供程序设置为使用 SimpleMembership,但我不确定如何指定要使用的表(假设这是正确的方法)。

web.config 部分:

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>

以及我(认为)我需要在 web.config 中拥有的当前 InitializeDatabaseConnection:

WebSecurity.InitializeDatabaseConnection("UPEFSSecurity", "Datamart_User", "UserId", "UserName", autoCreateTables: true);
4

1 回答 1

45

要正确执行此操作,您需要设置电子邮件恢复链接。但这是您将进行的 API 调用:

var token = WebSecurity.GeneratePasswordResetToken(username);
// create a link with this token and send email

// link directed to an action with form to capture password
WebSecurity.ResetPassword(token, password);

http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.resetpassword(v=vs.111).aspx

于 2013-02-25T21:37:56.870 回答