2012-05-06 11 views
3

これはバグかブラウザのキャッシュか、何か不足しているかどうかを判断しようとしていますが、ログアウトすると以前アクセスしたページ前。私は休憩のエンドポイントへのajaxコールを持っていて、私はそれを呼び出してレスポンスを印刷し、200 OKを得る。/j_spring_security_logoutが完全にログアウトしていない場合のスプリングセキュリティ

これでログアウトをクリックすると、無効なセッションURLパラメータを持つログインページに戻ります。だから、セッションを削除しようとしているように見えて、ブラウザを完全に閉じるだけでなく、タブにアクセスすることができなくなりました。しかし、ブラウザを閉じなければ、既にアクセスしたページにアクセスすることができます。アクセスしていないページでも、ログインページに転送します。それは私にはブラウザのキャッシュ問題があるのだろうかと思うが、Aoyaxリクエストの200okはそれを疑う。

スプリングセキュリティバージョン3.1.0

これは私のログアウトの設定です。私はので、私はDispatcherServletのXMLの

に追加し、それを修正するために、それは確かにブラウザのキャッシュの問題だった。このリスナー

<listener> 
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> 
</listener> 

UPDATE

を追加したweb.xmlに

<logout invalidate-session="true" logout-success-url="/login-page.html?logout=true" 
     logout-url="/j_spring_security_logout" /> 
    <session-management invalid-session-url="/login-page.html?session=invalid"> 
     <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" /> 
    </session-management> 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="cacheSeconds" value="0" /> 
</bean> 

先頭にMETAタグを追加しました

<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Expires" content="-1"> 

これで、すべてのマイページと残りの方法のキャッシュが無効になりました。

答えて

4

確かにそれは本当に、キャッシングの問題のようになります。

  • するTryアクセスがすでに(ちょうど?random= + Math.random()を追加AJAX呼び出しで同じことをしてみてください...いくつかの余分なランダムなパラメータ
  • でページを訪問した
  • 最後に、Firebugやその他の監視ツール(またはサーバー側のアクセスログ)を見て、リクエストがcacであることを確認してください(AJAXを使用している場合は、POSTを試してみてください)。 hed。キャッシュに問題がある場合は、ブラウザがリソースをキャッシュする理由を調べます。
+0

私は火かき棒を見ましたが、その奇妙な、ときどき、必ずしも、私は残りの呼び出しのための302を取得します。あなたの提案を試しに行く。 – Dennis

+0

確かにキャッシュの問題があったので、あなたはサーバーをデバッグモードにして、getにブレークポイントを追加してみて、最初にサーバーにヒットするとヒットしました。それ以外の場合は決してそれをヒットしません。今、Jerseyのrestメソッドのブラウザでのキャッシュを防ぐ方法。 – Dennis

+0

これをDispatcherServlet xmlファイルに追加し、 キャッシュを無効にします。 – Dennis