2012-01-26 16 views
2

セッションタイムアウトとクライアントがAjaxの部分レンダリングを行うと、Spring SecurityはlogOnページにリダイレクトされますが、リダイレクトはHttpXMLRequest期待どおりには何も起こりませんが、望ましくありません。JSF 2、Primeface、Spring Securityを使用してTomcat 7でセッションタイムアウトでリダイレクトする方法

春の設定:ここでXXXはあなたがリダイレクトするURLです

<?xml version="1.0" encoding="UTF-8"?> 
<partial-response> 
     <redirect url="XXX"> 
     </redirect> 
</partial-response> 

を次のようにXMLを必要とJSF AJAXリクエストをリダイレクトするに enter image description here

+0

これは、Ajax通信を利用するすべてのセッションベースWebアプリケーションに共通の問題です。おそらく、JavaScriptでタイムスタンプを保持し、希望の時間が経過した後にセッションタイムアウトメッセージを表示するタイマーを設定することが可能になります。問題は、サーバーへのすべての非同期ポストバック後にクライアントタイマーを更新することです。 –

答えて

2

<sec:session-management invalid-session-url="/page/start.jsf"> 
    <sec:concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/> 
</sec:session-management> 

Firebugのは、Ajaxのコミュを示し発生する。

春のセキュリティで送信されるajaxコールリダイレクトでは、リダイレクトや予期しない結果が発生しません。

希望の結果を得るには、すべてのjsfリクエストのためのフィルタが必要です。ログインページとチェックセッションが有効で、ヘッダ "Faces-Request"を確認して実際にjsf ajaxコールであれば、その値は "partial/ajax" 。セッションが期限切れで、ajaxリクエストが応答としてxmlより上に送信されている場合。

これはうまくいくはずです。

このlink @ SOは、フィルタが望ましくない場合には、春のセキュリティコードを助けます。

関連する問題