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