首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重置JSESSIONID

如何重置JSESSIONID
EN

Stack Overflow用户
提问于 2011-01-29 17:31:43
回答 4查看 11.9K关注 0票数 8

当用户进行身份验证时,重置会话cookie被认为是一种良好的安全做法。

如何在Java中做到这一点?

到目前为止,我的尝试是成功的,但我想知道是否有更好的方法:

代码语言:javascript
复制
public static HttpSession resetSessionId(HttpSession session, 
      HttpServletRequest request) {
    session.invalidate();
    session = request.getSession(true);
    return session;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-29 19:38:41

你的答案似乎是最好的。另一种方法是以这种方式直接操作cookes:

代码语言:javascript
复制
 Cookie cookie = new Cookie ("JSESSIONID", "randomValue");
 cookie.setMaxAge( 0 );

因此,您创建了一个同名的新cookie并立即使其失效,但我不建议采用这种方式,因为对于熟悉基本Servlet API的任何人来说,您的cookie要干净得多,而且非常明显。

票数 2
EN

Stack Overflow用户

发布于 2011-01-29 17:48:41

我只传递从中获取会话的请求。如果会话还不存在,那么创建一个会话只是为了使其无效是没有意义的。如果容器刚刚创建了会话(由于用户在登录表单上直接发出了第一个http请求),则也是如此。

代码语言:javascript
复制
public static ... (HttpServletRequest request) { 
    HttpSession session = request.getSession(false);
    if (session!=null && !session.isNew()) {
        session.invalidate();
    }
票数 4
EN

Stack Overflow用户

发布于 2011-01-30 05:43:14

Tomcat (从6.0.24AFAIK开始)可以自动更改身份验证时的sessionId -只要您使用标准的servlet身份验证机制(基本的、基于表单的身份验证)。这可以通过基本身份验证器阀http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html的changeSessionIdOnAuthentication进行配置

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4836106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档