1

Grails(v1.3.7)で開発されたアプリケーションがあり、認証にSpring Security Core(v1.2.6)プラグインを使用しました。.warファイルを作成した後、アプリケーションを標準のTomcatサーバー(v7.0.22)にデプロイしました。アプリケーションは正常に実行されます。

アプリケーションをビルドする前、またはTomcatサーバー自体で、web.xmlでセッションタイムアウト期間を構成できることを知っています。ただし、セッションがタイムアウトするたびに、(さらに)任意のページを自動的にログインページにリダイレクトしたいと思います。セッションがタイムアウトし、ユーザーがリンクをクリックするか、単に現在のページを更新すると、Tomcatエラーが発生するためです。

誰かがそれを簡単に解決する方法を提案できますか?TomcatまたはSpringSecurityCoreにその仕事をする構成(expired-session-urlなど)はありますか?

プラグインドキュメントサイト、プラグインブログサイトで検索しましたが、何も見つかりませんでした。このサイトは、コードにリスナーを追加する必要があることを示唆しており、それを行うのは嫌で、このような単純な構成を使用したいと思います。誰かが何かを導くことができますか?

期待してくれてありがとう

4

1 に答える 1

2

Httpはステートレスプロトコルであり、セッションはクライアントCookie(+ローカルデータベース)に保存されている単なるマーカーであり、これをイベントとして処理することはできません。「新しいクライアント」と「セッションの有効期限が切れました」はまったく同じです。これは、現在のリクエストのブラウザを識別できないことを意味します。ほとんどの場合、ユーザーが認証されていないことも意味します(少なくとも、生のSpring Security Coreの場合)

あなたの場合、あなたはすでにセッションの有効期限が切れたハンドラーを持っています、それはあなたがこのtomcatエラーを受け取っているときです。このエラーを処理し、ユーザーをログインページにリダイレクトするだけです。

ところで、適切なSpring Security構成がある場合は、許可されていないすべてのユーザーをログインページにリダイレクトする必要があります。また、ユーザーを認証したが、標準のTomcatセッションにいくつかのユーザーデータがある場合は、アプリアーキテクチャに問題が発生したようです。少なくとも2つの方法があります。独自のユーザーセッションを回避するか、ある種のセッションベースのSpringSecurity認証構成を作成します。

于 2012-05-10T10:26:41.727 に答える