2016-04-22 1 views
1

WebMatrixでexsisting PasswordResetフォームを使用しています。私はモジュール内で何も変更しなかったが、動作していない。 「パスワードを忘れましたか?」をクリックするとリンクをクリックすると、ForgotPasswordフォームが表示されます。メールアドレスを入力して「送信指示」をクリックすると、メールに送信されます。しかし、リンクをクリックするとすぐにパスワードリセット画面が表示されますが、画面上部に「パスワードをリセットできませんでした。エラーを修正してもう一度やり直してください」というメッセージが表示されます。私はパスワードをリセットしても、何も起こらない。ここに私の_AppStartのコードであるWebMatrixでPasswordResetが機能していません

@* Remove this section if you are using bundling *@ 
@section Scripts { 
    <script src="~/Scripts/jquery.validate.min.js"></script> 
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> 
} 

@{ 
    Layout = "~/_SiteLayout.cshtml"; 
    Page.Title = "Password Reset"; 

    var passwordResetToken = Request.Form["resetToken"] ?? Request.QueryString["resetToken"]; 

    bool tokenExpired = false; 
    bool isSuccess = false; 

    // Setup validation 
    Validation.RequireField("newPassword", "The new password field is required."); 
    Validation.Add("confirmPassword", 
     Validator.EqualsTo("newPassword", "The new password and confirmation password do not match.")); 
    Validation.RequireField("passwordResetToken", "The password reset token field is required."); 
    Validation.Add("newPassword", 
     Validator.StringLength(
      maxLength: Int32.MaxValue, 
      minLength: 6, 
      errorMessage: "New password must be at least 6 characters")); 

    if (IsPost && Validation.IsValid()) { 
     AntiForgery.Validate(); 
     var newPassword = Request["newPassword"]; 
     var confirmPassword = Request["confirmPassword"]; 

     if (WebSecurity.ResetPassword(passwordResetToken, newPassword)) { 
      isSuccess = true; 
     } else { 
      ModelState.AddError("passwordResetToken", "The password reset token is invalid."); 
      tokenExpired = true; 
     } 
    } 
} 

<hgroup class="title"> 
    <h1>@Page.Title.</h1> 
    <h2>Use the form below to reset your password.</h2> 
</hgroup> 

@if (!WebMail.SmtpServer.IsEmpty()) { 
    if (!Validation.IsValid()) { 
     <p class="validation-summary-errors"> 
      @if (tokenExpired) { 
       <text>The password reset token is incorrect or may be expired. Visit the <a href="~/Account/ForgotPassword">forgot password page</a> 
       to generate a new one.</text> 
      } else { 
       <text>Could not reset password. Please correct the errors and try again.</text> 
      } 
     </p> 
    } 

    if (isSuccess) { 
     <p class="message-success"> 
      Password changed! Click <a href="~/Account/Login" title="Log in">here</a> to log in. 
     </p> 
    } 

    <form method="post"> 
     @AntiForgery.GetHtml() 
     <fieldset> 
      <legend>Password Change Form</legend> 
      <ol> 
       <li class="new-password"> 
        <label for="newPassword" @if (!ModelState.IsValidField("newPassword")) {<text>class="error-label"</text>}>New password</label> 
        <input type="password" id="newPassword" name="newPassword" disabled="@isSuccess" @Validation.For("newPassword") /> 
        @Html.ValidationMessage("newPassword") 
       </li> 
       <li class="confirm-password"> 
        <label for="confirmPassword" @if (!ModelState.IsValidField("confirmPassword")) {<text>class="error-label"</text>}>Confirm password</label> 
        <input type="password" id="confirmPassword" name="confirmPassword" disabled="@isSuccess" @Validation.For("confirmPassword") /> 
        @Html.ValidationMessage("confirmPassword") 
       </li> 
       <li class="reset-token"> 
        <label for="resetToken" @if (!ModelState.IsValidField("resetToken")) {<text>class="error-label"</text>}>Password reset token</label> 
        <input type="text" id="resetToken" name="resetToken" value="@passwordResetToken" disabled="@isSuccess" @Validation.For("resetToken") /> 
        @Html.ValidationMessage("resetToken") 
       </li> 
      </ol> 
      <input type="submit" value="Reset password" disabled="@isSuccess"/> 
     </fieldset> 
    </form> 
} else { 
    <p class="message-info"> 
     Password recovery is disabled for this website because the SMTP server is 
     not configured correctly. Please contact the owner of this site to reset 
     your password. 
    </p> 
} 

以下はパスワードリセットコードである

WebSecurity.InitializeDatabaseConnection( "StarterSite"、 "のUserProfile"、 "ユーザーID"、 "電子メール" は、 autoCreateTables:true);

OAuthWebSecurity.RegisterGoogleClient(); 

WebMail.SmtpServer = "smtp.gmail.com"; 
WebMail.EnableSsl = true; 

WebMail.SmtpPort = 587; 
WebMail.UserName = "[email protected]"; 
WebMail.Password = "September"; 
WebMail.From = "[email protected]"; 

答えて

0

ユーザーオブジェクト内の定数を変更します。必要な属性をそこから削除します。また、自分のベース認証を書くことをお勧めします。

+0

これはどういう意味ですか?私はあなたに従っていない。 – tnbumbray

+0

こんにちは、sory私は時間がありません。 WebMatrixは軽量の認証フレームワークであり、WebMatrixはそれを使用している間に一定の安定性を備えています。そのうちの1つはビューのchtml属性です。そこでは、検証ルールがそれらを削除するのを見ることができ、あなたのエラーは解消されます。また、私はWebMatrixで長年働いており、このような他の多くの構成があります。私は自分のフレームワークを書いており、私はあなたにこれをお勧めします。宜しくお願いします – dewelloper

関連する問題