【发布时间】:2017-04-01 07:19:43
【问题描述】:
我有以下问题。我的spring应用配置如下:
应用程序上下文安全
<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";
}
我认为 sping security 已经清除了 session、request 和 SecurityContextHolder。那我该如何解决这种情况呢?
【问题讨论】:
-
一个选项是使用 sessionExpire 事件。看看它是如何在这里完成的。只需赶上活动并在那里做任何你想做的事stackoverflow.com/questions/11843010/…
标签: java spring spring-security