現在spring bootでwebアプリの開発を行っています。spring securityによる認証チェックを実装しています。
ログインIDとパスワードを指定するため次のサイトを参考にしてログイン画面を独自実装しています。
Spring Bootで、ユーザ名とパスワードを指定した認証処理の実装方法
質問があるのですが、
結論から言うと
session['SPRING_SECURITY_LAST_EXCEPTION']を使って2ヶ所(ID・PW)にメッセージを表示するにはどうしたらいいでしょうか?
ログインボタン押下後、MyUserDetailsAuthenticationProviderクラスのretrieveUserメソッドが呼び出され、次のTopControllerクラス(仮)にUserオブジェクトが渡されるので、retrieveUserメソッド内でバリデーション処理もしています。
Java
1Set<ConstraintViolation<LoginForm>> result = validator.validate(loginForm);
このようにBean Validationを使って@NotNullや@Size(min = 3, max = 20)のバリデーションチェックをしています。
エラーメッセージを検知する仕組みとしては,retrieveUserメソッド内のためExceptionをスローしてthymeleaf内で以下のように判定しメッセージを表示します。
html
1<div th:if="${session['SPRING_SECURITY_LAST_EXCEPTION']} != null">ログインIDは必須です</div>
しかしIDとPWの2ヶ所にメッセージを表示したいので、1つしかセッションにメッセージを格納できないsession['SPRING_SECURITY_LAST_EXCEPTION']の仕組みでは、1ヶ所にしかメッセージを表示できません。
以下のようにエラーメッセージをカスタマイズする方法は知っていますが、今回の要件は2ヶ所のエラーを検知しなけらばいけないので違います。
ログインエラーのメッセージをカスタマイズする
2ヶ所に異なるメッセージを表示するにはどうすればいいでしょうか?
もし分かる方がいれば教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー