ケースは簡単です: ユーザーがログアウトをクリックし、LogoutFilter に移動して:
HttpServletRequest hreq = (HttpServletRequest) request;
hreq.getSession(false).invalidate();
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.reset();
httpResponse.setHeader("Cache-Control", "no-cache");
httpResponse.setHeader("Pragma", "no-cache");
httpResponse.setHeader("Cache-Control", "no-store");
httpResponse.setHeader("Cache-Control", "must-revalidate");
httpResponse.setDateHeader("Expires", 0);
chain.doFilter(request, response);
また、ページにログインリンクが表示されます。問題は簡単です。セッションは再作成されますが、ユーザー プリンシパルはキャッシュされるため、ログイン ポップアップは表示されず、アプリケーションはキャッシュされたプリンシパルを使用します。
質問は簡単です: ユーザー プリンシパルも削除する方法はありますか? そのため、ブラウザはログアウト後に再度ログインするよう求めますか?