在Spring MVC中,有什么方法可以请求不继续用户会话?

时间:2019-02-19 10:53:32

标签: java spring spring-mvc

我需要向服务器发出ajax请求,以检查用户会话是否过期。问题在于,如果会话未过期,则该请求将继续用户会话。如何告诉Spring不要为此特定请求继续会话?

1 个答案:

答案 0 :(得分:0)

使HTTP会话失效的一种可能方法是使JSESSIONID cookie失效。您可以从HttpServletRequest的getCookies()方法中获取一系列Cookie。您可以从该数组中找到名称为JSESSIONID的cookie。但是,我们无法使用Cookie对象删除Cookie。但是我们可以通过将最长期限设置为零(即cookie.setMaxAge(0))来使它过期。这是您可以尝试使用的可能实现:

public static void expireJSessionIdCookie(HttpServletRequest request) {
    Cookie[] cookies = request.getCookies();
    Optional<Cookie> cookieOpt = Stream.of(cookies)
            .filter(c -> c.getName().equalsIgnoreCase("JSESSIONID"))
            .findFirst();
    if (cookieOpt.isPresent()) {
        Cookie cookie = cookieOpt.get();
        cookie.setMaxAge(0);            
    }
}