私は単純なパスワードリセットフォーム画面を持っています。ユーザーが[Recover]ボタンを使用して送信すると、ページはhttp://localhost:8080/api/v1/accountmanagement/user/password_resetに送信されます。そのエンドポイントでは、ユーザの電子メールが検証され、電子メールを介してシステムによってユーザに送信されるリンクに連結されたハッシュが生成される。すべてうまく動作しますが、私は何が起こるかは、ユーザーが復元ボタンをクリックしたときに、復元用のパスワードページに残しておきたいことです。私がしようとしているのは、「あなたのパスワード要求の回復などを提出していただきありがとうございます。 divを表示することは問題ではありません(プレーンなJavaScriptを使用している可能性があります - 私はjsフレームワークを持っていないかもしれません - たぶんjQueryを使用しています)、ユーザーがリカバリボタンをクリックするとポストリクエストが残りのAPI表示されているページを変更します。ポストリクエストを送信しても、spring mvcを使用してページに残ります
target="_blank"
を追加しようとしましたが、機能しませんでした。私のフロントエンドはhtmlとthymeleafでのみ書かれています。
私はただ欠落しているという単純な解決策があるかもしれません。
resetPassword.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" lang="en">
<head>
<title>Reset Password</title>
<link href="css/main.css" rel="stylesheet" />
</head>
<div>
<h2> Recover your password</h2>
<p>
To recover your password follow the instructions below to reset your password.
</p>
</div>
<form th:action="@{/api/v1/accountmanagement/user/password_reset}" method="post" id="resetPasswordForm" th:object="${account}" target="_blank">
<div id="field_email">
<label for="email">Enter your email address : </label>
<p>Enter the email address with your account.</p>
<div >
<input type="text" id="email" name="email" th:field="*{email}" />
</div>
</div>
<div id ="successRecover" style="display: none;">
An email has been sent to your email address. The email contains instructions to reset your password.
</div>
<div th:if="${param.error}" class="login-panel_error error">
Error.
</div>
<div>
<button type="submit" class="btn-primary">
<i class="fa fa-spin fa-spinner hidden"></i>
<span>Recover</span>
</button>
</div>
</form>
PasswordManagementController.ja VA
@Controller
@RequestMapping("/api/v1/accountmanagement")
public class PasswordManagementController {
@Autowired
private PasswordResetService passwordResetService;
private Logger LOG = LoggerFactory.getLogger(this.getClass());
@RequestMapping(value = "/user/password_reset", method = RequestMethod.POST)
public ResponseEntity processResetPassword(@ModelAttribute(value = "account") Account account, BindingResult result,
HttpServletRequest request) {
LOG.info("account email " + account.getEmail());
// build the hash here for hashUrl
if (account != null) {
if (!StringUtil.isBlank(account.getEmail())) {
try {
passwordResetService.processResetPassword(account, hashUrl);
} catch (AccountConfigException ace) {
// deal with exception here.
// return
} catch (Exception e) {
// deal with exception here.
// return
}
return new ResponseEntity(HttpStatus.OK);
} else {
// deal with an exception here.
// return
}
} else {
// deal with an exception here.
// return
}
}
}
ページ/フォームを提出しているなぜ、サーバーをヒットするAJAXを使用することを検討し、それを使用して、応答を返します。 javascript正しいdivを表示/非表示にします。 –