3

Grails アプリケーションに Spring Security プラグインと Spring Security REST プラグインを使用しており、パスワード変更ポリシーを実装しようとしています。フロントエンドでは、ログインしていないときにアプリケーションが 401 エラーをキャッチしていますが、パスワードの有効期限が切れている場合は、まったく同じ HTTP 応答が返されます。変える方法がないか探しています。

AbstractAuthenticationFailureEvent をキャッチして、それが AuthenticationFailureCredentialsExpired イベントによるものかどうかを判断できますが、そのイベントを取得して、これが単なるパスワード ログインの失敗ではないことを示す意味のあるものを API から送信する方法がわかりません。

余談ですが、パスワードを期限切れにしてそのポリシーを適用できるので、それは問題ではありません。主な問題は、この API のコンシューマが、失敗したユーザー名/パスワードのチャレンジと「パスワードを変更する必要がある」シナリオをどのように区別できるかです。

4

2 に答える 2

1

この投稿に対する Burt Beckwith の回答に基づく解決策を見つけました: Grails Spring Security Login/Logout Controllers not generated

春のセキュリティ REST プラグインには、自分のプロジェクトにコピーして書き直した RestAuthenticationFailureHandler というクラスがあります。onAuthenticationFailure メソッドが呼び出されると、エラーのタイプが org.springframework.security.authentication.CredentialsExpiredException であるかどうかを確認し、そうである場合は、事前構成されたものよりも適切な HTTP ステータス コードを発行します。

于 2015-10-14T15:29:13.183 に答える