「パスワードを忘れた」機能を実装しています。Spring MVCとAjaxを使用していますが、トークンURLを使用してAjaxからSpringControllerメソッドを呼び出したいときに問題が発生します。私が持っているコードは次のようなものです:
スプリングコントローラー
@RequestMapping(value="/resetPassword/{token}", method = RequestMethod.POST)
public @ResponseBody String doResetPassword(@PathVariable("token") String tokenID,
@RequestParam String newPassword, HttpServletRequest request) { ... }
トークンは、ユーザーがパスワードのリセットを要求したときにランダムに生成される一意のIDであり、電子メールを介して一時的なリンクを取得し、ユーザーを[パスワードのリセット]ページにリダイレクトします。
Ajax関数
$.ajax({
type: "POST",
url: "./resetPassword/" + token,
data: "newPassword=" + password,
async: false,
success: function(response){
...
Ajax呼び出しを行うと、404ページが見つかりませんというエラーが発生します。
注: URL形式は機能します。[パスワードのリセット]フォームを表示するコントローラーメソッドを使用して、他のAjax関数を既に使用して./
います。
@RequestMapping(value="/resetPassword/{token}")
public String showResetPasswordPage(Model model, @PathVariable("token") String token){
model.addAttribute("token", token);
return "account/resetPassword";
}
この問題は、ユーザーが実際にボタンをクリックしたときに(新しいパスワードを入力した後)、以前の要求方法で発生します。