1

当用户注销(或登录,就此而言)时,我想确保用户会话 cookie 的值已更改。我怎样才能做到这一点?如果我只是这样做,session.invalidate()tomcat 不会返回会话 cookie 标头,因为没有活动会话,因此 cookie 保持不变。如果我session.invalidate(); request.getSession()创建一个新会话,新会话将获得相同的 sessionId,因此 cookie 也保持不变。

(我想更改会话 cookie 值,因为我们有几个共享一个 sessionId 的 WAR,而且我也不能轻易地使其他 WAR 中的会话无效。)

4

1 回答 1

1

看来您必须通过将过期版本的 cookie 添加到响应中来手动删除 cookie。也就是说,您在 中找到 cookie request.getCookies(),将其 maxAge 设置为 0 并执行response.addCookie(..)。您还需要使会话无效,并注意不要根据该请求重新创建会话。这意味着您不能直接显示“您现在已注销”页面,而是必须执行客户端重定向到这样的页面 - 现在将被分配一个新的会话 cookie。

于 2012-11-16T12:32:42.840 回答