2012-05-10 14 views
1

私はのGrailsで開発されたアプリケーション(v1.3.7)を持っていると我々は、認証のための春のセキュリティコア(v1.2.6)のプラグインを使用。 .warファイルを作成した後、私はを標準tomcatサーバー(v7.0.22)にデプロイしました。アプリケーションはうまく動作します。セッションタイムアウト後のリダイレクト(Grailsの、春のセキュリティ・コア、Tomcatの)

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

誰も簡単に解決する方法を提案できますか? Tomcatまたは春のセキュリティコアに何らかの設定(期限切れセッションURLなど)がありますか?

プラグインのdoc site、プラグインのブログサイトで検索しましたが、何も見つかりませんでした。 This siteは、リスナーをコードに追加する必要があると提案しています。私はそうしたくないでしょうし、thisのような簡単な設定を使いたいと思います。誰もが何かを導くことができる?見越して

おかげ

答えて

2

HTTPはステートレスなプロトコルであり、セッションは、クライアントのクッキーに保存されているだけでマーカー(+ローカルデシベル)で、あなたがイベントとしてこれを処理することはできません。 'new client'と 'session expired'はまったく同じですが、現在のリクエストに対してブラウザを識別できないことを意味します。ほとんどの場合、それはユーザーが認証されていないことを意味します(少なくとも、生Spring Security Coreの場合)

あなたには、このTomcatエラーが発生したときにセッションの期限切れハンドラがあります。このエラーを処理して、ユーザーをログインページにリダイレクトしてください。

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

+0

イゴール、あなたは正しいです。私は@Secured(['IS_AUTHENTICATED_FULLY'])を特定のユーザーロール(すべてのロールでは開きますが匿名ではない)を必要としないすべてのコントローラーに追加する必要がありました。特定のロールに対して定義されたコントローラは、期待どおりに機能します。 –

関連する問題