ユーザーがページを読み込もうとするときはいつでも、ユーザーのリクエストを処理する必要があります。このリスナーでは、いくつかの特別なチェックを行う必要があり、その結果、ユーザーのセッションを閉じるか閉じないかを決定します。これをどのように実装する必要がありますか? 一般的なタスクのように見えますが、私は春と春のセキュリティにかなり慣れていません。
3 に答える
私はリスナーを、行動を観察するが、行動に影響を与えないものと考えています。ユーザーのセッションを閉じると述べているため、これは間違いなくユーザーに影響を与えています。したがって、リスナーではなくインターセプター/フィルターについて話していると思います。
Spring は、このようなものに適したインターセプター フレームワークを提供します。
ただし、セッションについて話しているので、これは春のセキュリティの領域です。ここでセッション管理を処理する別の方法があるようです:春のセキュリティセッションを無効にすることは可能ですか?
リチウムが言ったように、フィルターは特定のタスクを処理するのに適していると思われます。Spring Security は独自のフィルター チェーンを使用し(リンクは 3.1.x ドキュメントへのリンク)、独自のフィルターを追加できます。チェーン内のフィルターの位置に注意してください。注文に関する注意事項を次に示します。
要件に応じて、このようなフィルターは、たとえば、ユーザーを要求されたページ以外の別のページにリダイレクトし、フィルター チェーンの実行を停止することができます。ここでも、フィルター チェーンでの配置が重要です。
インターセプターを試す必要があると思います。もう少し詳細:
HandlerInterceptor
クラスを作成
public class RequestInitializeInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //Code to perform database checks } }
- servlet-context.xml (サーブレットの ApplicationContext) ファイルでインターセプターを定義する
<mvc:interceptors> <mvc:interceptor> <!-- Update path as per you requirement --!> <mvc:mapping path="/**"/> <bean class="com.abc.web.support.RequestInitializeInterceptor" /> </mvc:interceptor> </mvc:interceptors>