我使用Spring MVC和Spring Security运行Jetty 9.3。我的主页面被JSP中的Spring Security Login页面拦截。问题出在我的 SessionTimeoutIntercepter ,它应该在会话超时的情况下重定向。当会话超时时我想要做什么 - 重定向到Spring Security Login页面,其中包含一些参数,例如" Session expired"。问题是我使用的 session.isNew()总是返回false((我尝试映射到*" / **" * - 结果相同。即使之后我对服务器和登录页面的第一个请求 - 这个函数返回false(((有人可以帮我解释原因吗?
答案 0 :(得分:0)
我认为,有些人可能会做类似
的事情Session session = request.getSession();
if(session.isNew()) {
//doSmth
}
但是方法getSession()返回新会话(如果它还不存在)。你需要getSession(false) - 它不会创建新会话,只要它不存在就返回null或者在超时到期时返回旧会话。 在您的情况下,您可以向拦截器添加一些逻辑
Session session = request.getSession(false);
if(session == null || session.isNew() {
// do redirect
}