3

そのため、これがバグなのかブラウザのキャッシュなのか、何かが足りないのかを判断しようとしていますが、ログアウトすると、以前にアクセスしたすべてのページにアクセスできます。残りのエンドポイントへのajax呼び出しもあり、それを呼び出すと、応答を出力して200okを取得します。

ここで、ログアウトをクリックすると、無効なセッションURLパラメータを使用してログインページに戻ります。そのため、セッションを削除しようとしているようです。さらに、ブラウザを完全に閉じると、タブだけでなく、以前にアクセスできたページにアクセスできなくなります。しかし、ブラウザを閉じないと、すでにアクセスしたページにアクセスできます。まだアクセスしていないページは、ログインページに転送されます。ブラウザのキャッシュの問題かどうか疑問に思いますが、ajaxリクエストの200okはそれを疑わせます。

Spring-Securityバージョン3.1.0

ログアウトの設定は次のとおりです。

<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>

web.xmlにこのリスナーを追加しました

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

アップデート

それは確かにブラウザのキャッシュの問題だったので、それを修正するためにDispatcherServletxmlに追加しました

<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">

これにより、すべてのページとRESTメソッドのキャッシュが無効になります。

4

1 に答える 1

4

実際、それは実際にはキャッシュの問題のように見えます。

  • いくつかの追加のランダムパラメータを使用して、すでにアクセスしたページにアクセスしてみてください
  • ... AJAX呼び出しでも同じことを試してください(?random=+を追加するだけMath.random()です。
  • またPOST、GETがキャッシュされる可能性が非常に高いため、AJAXを使用してみてください。
  • 最後に、Firebugまたはその他の監視ツール(またはサーバー側のアクセスログ)を調べて、リクエストがキャッシュされたことを確認します。キャッシュが問題になる場合は、ブラウザがリソースをキャッシュすることを決定した理由を調査してください。
于 2012-05-06T14:23:45.983 に答える