代码之家  ›  专栏  ›  技术社区  ›  abyx

使用Spring Security检索会话ID

  •  22
  • abyx  · 技术社区  · 14 年前

    出于日志记录的目的,我想创建一个记录器,自动将当前会话的ID添加到日志记录的行中。
    对于已登录的用户,这不是问题:

    ((WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails())
        .getSessionId()
    

    问题是,在用户登录之前 getAuthentication() null . 有没有其他方法可以在不引用当前响应或类似内容的情况下获取会话ID?

    1 回复  |  直到 5 年前
        1
  •  53
  •   axtavt    14 年前

    RequestContextHolder.currentRequestAttributes().getSessionId();
    

    这取决于春天的天气 RequestContextHolder DispatcherServlet RequestContextListener 宣布。如果不存在,也将创建会话。

        2
  •  3
  •   Sandeep Sharda    4 年前

    更简单的方法是:

    @GetMapping(path = "/foo")  
    public void foo(HttpSession session) {  
        String sessionId = session.getId();  
    }