【问题标题】:jetty with spring MVC session.isNew() returns always false带有 spring MVC session.isNew() 的码头总是返回 false
【发布时间】:2016-02-07 15:40:54
【问题描述】:
我正在使用 Spring MVC 和 Spring Security 运行 Jetty 9.3。我的主页被 JSP 中的 Spring Security 登录页面拦截。问题在于我的 SessionTimeoutIntercepter 在会话超时的情况下应该重定向。会话超时时我想做什么 - 使用“会话已过期”之类的参数重定向到 Spring Security 登录页面。问题是我使用的 session.isNew() 总是返回 false((( 我尝试映射到 *"/**"* - 相同的结果。即使在我第一次请求服务器和登录页面 - 此函数返回 false(((有人可以帮我解释为什么吗?
【问题讨论】:
标签:
spring
spring-mvc
spring-security
jetty
【解决方案1】:
我认为,有些人可能会做类似的事情
Session session = request.getSession();
if(session.isNew()) {
//doSmth
}
但是 getSession() 方法返回新会话,如果它还不存在的话。您需要 getSession(false) - 它不创建新会话,如果它不存在则返回 null 或返回超时过期的旧会话。
在您的情况下,您可以向拦截器添加一些逻辑
Session session = request.getSession(false);
if(session == null || session.isNew() {
// do redirect
}