0

初心者の Spring MVC/セキュリティに関する質問。ユーザーのセキュリティ/認証を管理するためにSpring Securityを実装することができました。ビジネス ロジックの結果に基づいて、異なるビュー/ページへのリダイレクトを使用して、認証されたユーザーにビジネス ロジックを実装したいと考えています。

例 (ユーザーが認証に成功し、要求されたビュー/ページに必要な役割を持っていると仮定します):

  • ユーザーがまだ電子メールを検証していない場合 > 電子メール検証エラー ビュー/ページを表示し、電子メール検証電子メールを再送信するためのリンクを表示する
  • ELSE IF ユーザーが他のビジネス ロジックに失敗する > ページ X を表示する
  • ELSE IF ユーザーが他のビジネス ロジックに失敗する > 表示ページ Y
  • ELSE > デフォルトの認証後のビュー/ページまたは要求されたビュー/ページを表示

私は周りを検索し、これを実装する可能な方法を見つけました (例: カスタム authenticationSuccessHandler と Filtering) が、私が見つけた例については確信が持てません:

a) ビジネス ロジックの結果に基づいて、別のビュー/ページにリダイレクトする方法

b) このアプローチが、ページに直接アクセスしようとするユーザーを処理するかどうか (つまり、電子メールを検証していない認証を通過したユーザーは、アクセスしようとしているものに関係なく、「電子メール検証エラー」ビュー/ページにリダイレクトする必要があります。彼らは(安全な)ビュー/ページに直接アクセスしようとします)

上記に代わる方法は、すべてのコントローラーにビジネス ロジックを含めることです。

とにかく、「最善/標準」のアプローチを理解したいと思っています (そのようなものが存在する場合!)

4

1 に答える 1

0

私はこれを分野横断的な懸念事項と見なすので、私の意見では、フィルタリングのアプローチを検討するのは正しいと思います。カスタム AuthenticationSuccessHandlerを実装するのが正しい方法だとは思いません。フィルターを使用すると、ユーザーが認証するときだけでなく、ロジックが適用される URL も制御できます。

フィルタリングを実現する方法については、構成する方法がいくつかありますが、十分にテストされた javax.servlet.Filter 実装を提供するよりも複雑なことを行う必要があるとは思えません。

オプション 1 は、Spring Security フィルター チェーンの一部としてサーブレット フィルターを構成することです。Spring Security は一連のフィルターとして実装され、それぞれに明確に定義された役割があります。Spring Security を使用すると、アプリケーション固有のセキュリティ関連ロジックのために、このチェーンにカスタム フィルターを挿入できます。Spring Security のドキュメントでは、これについてここで説明しています。

ビジネス ロジックに到達する前に、ユーザーが認証され、そのロールがチェックされていることを期待していると述べたので、Spring Security フィルターの実装に依存して、Spring Security フィルター チェーンの後方にフィルターを挿入できます。認証と役割チェックを強制します。

別の方法として、フィルター実装を web.xml で直接構成し、Spring Security によって保護されている URL でのみ呼び出されるようにすることもできます。カスタム フィルターが呼び出される前に、Spring Security フィルター チェーンが最初に呼び出されたことを確認する必要があるため (ユーザーが認証され、正しいロールを持っていることを確認するため)、web.xml でフィルターを宣言する順序が重要になります。

于 2013-06-25T16:49:28.453 に答える