Webmatrix重置密码

时间:2013-04-10 12:23:07

标签: c# asp.net-mvc-4 membership-provider simplemembership

我想知道如何在不知道旧密码的情况下使用mvc4提供商设置密码?

我想制作一个忘记密码功能,用户通过电子邮件收到安全链接,然后点击链接,转到我的应用程序,然后只需填写新密码,无需安全问题。< / p>

使用mvc3附带的成员资格提供程序很容易做到这一点。我现在正在使用mvc4附带的简单会员提供商,但我无法使其正常运行。

到目前为止,代码看起来很简单:

MembershipUser user = Membership.GetUser( cust.Email );
                String pass = user.GetPassword();

                Boolean success = WebSecurity.ChangePassword( cust.Email, pass, model.Password );

它目前在上面的行中给出了错误调用GetPassword()的错误:

  

不支持指定的方法。

我还会在web.config中显示相关部分:

<system.web>
      <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"
       enablePasswordRetrieval="true" enablePasswordReset="true" passwordFormat="Encrypted" requiresQuestionAndAnswer="false"
       requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0"
       passwordAttemptWindow="10" />
          </providers>
      </membership>

上面我尝试在mvc3中添加您用于提供程序的属性,但它似乎不适用于此。

1 个答案:

答案 0 :(得分:3)

WebSecurity.GeneratePasswordResetToken生成并返回一个唯一的字符串。

WebSecurity.ResetPassword使用该令牌更改密码。

为用户提供指向作为参数的操作的链接,然后为他们提供一个简单的表单来更改他们的密码。