次のような問題があります。私の春のアプリケーションは、次のように設定されています。セッションタイムアウトの管理方法の期限が切れました
アプリケーションコンテキストのセキュリティ
<http use-expressions="true" pattern="/ext/**" entry-point-ref="loginUrlAuthenticationEntryPoint">
//Others configuration
<session-management invalid-session-url="/sessionExpired">
</session-management>
</http>
マイコントローラー:
@RequestMapping(value="/sessionExpired", method = RequestMethod.GET)
public String sessionExpired(ModelMap model, HttpSession session) {
return "login";
}
今私の問題は、のsessionExpired方法で、私はいくつかを区別することができるはずということですたとえば、私のユーザーのプロパティ:
@RequestMapping(value="/sessionExpired", method = RequestMethod.GET)
public String sessionExpired(ModelMap model, HttpSession session) {
//Test1
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
MyUser u = (MyUser) authentication.getPrincipal();
//Test2
MyUser u = session.getAttribute("user");
if(u.isItalian())
return "loginA"
else
return "loginB"
return "login";
}
t sping securityはすでにセッション、要求、SecurityContextHolderをクリーンアップしています。それでは、どうすればこの問題を解決できますか?
一つの選択肢は、sessionExpireイベントを使用することです。それがここでどのように行われたかを見てください。ちょうどイベントをキャッチし、あなたがそこに欲しいものを何でもするhttp://stackoverflow.com/questions/11843010/logout-session-timeout-catching-with-spring-security – george