Spring Security Spring Boot:注销后,Cookie过期的请求仍然可用

nukf8bse  于 2023-01-30  发布在  Spring
关注(0)|答案(1)|浏览(259)

在spring Boot 项目中,当用户注销时,我们使用以下代码块使cookie无效:

//name = "Token"
//value = "expired"
//age = 0
private void setExpiredCookie(HttpServletResponse response, String name, String value, int age) {
    Cookie cookie = new Cookie(name, value);
        cookie.setSecure(true); //Send cookie to the server only over an encrypted HTTPS connection
        cookie.setHttpOnly(true); //Preventing cross-site scripting attacks
        cookie.setPath("/"); //Global cookie accessible every where
        cookie.setMaxAge(age); //Deleting a cookie. I Passed the same other cookie properties when you used to set it

        response.addCookie(cookie);
}

然而,在注销后,我用一个应用程序测试了我的网站,以捕获请求并通过中继器重新发送它,并使用确切的值,如令牌和有效负载。
我重新发送了一个请求,例如,更改电子邮件地址,这个请求,尽管注销,有效期为15分钟(原始cookie的生命周期)。
我错过了什么?因为我正确地删除和保护cookie。

t40tm48m

t40tm48m1#

您正在创建新cookie。您应该使会话ID为的cookie无效,该ID是在您进行身份验证时提供给您的。只需使用以下命令:

HttpSession session = httpServletRequest.getSession(false);
session.invalidate();

相关问题