如何在MVC4中使用SimpleMembership重置或更改密码?

时间:2013-02-25 21:02:13

标签: asp.net-mvc-4 simplemembership

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

我已阅读文档并发现ResetPassword函数is not supported if using SimpleMembership。我的问题是,我该如何:

  1. 从SimpleMembership切换到使用SimpleMembership表和格式
  2. 的标准成员资格
  3. 将用户密码重置为我指定的内容?
  4. 我发现web.config设置(理论上)将成员资格提供程序设置为使用SimpleMembership,但我不确定如何指定要使用的表(假设这是正确的方法)。< / p>

    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);
    

1 个答案:

答案 0 :(得分: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