为了记录日志,我想创建一个记录器,它会自动将当前会话的ID添加到记录的行中。
对于已登录的用户,这不是问题:
((WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails())
.getSessionId()
问题是,在用户登录之前,getAuthentication()
返回null
。有没有其他方法可以在不引用当前响应或类似内容的情况下获取会话ID?
为了记录日志,我想创建一个记录器,它会自动将当前会话的ID添加到记录的行中。
对于已登录的用户,这不是问题:
((WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails())
.getSessionId()
问题是,在用户登录之前,getAuthentication()
返回null
。有没有其他方法可以在不引用当前响应或类似内容的情况下获取会话ID?
3条答案
按热度按时间hjqgdpho1#
您可以使用
这依赖于Spring的
RequestContextHolder
,所以它应该和Spring MVC的DispatcherServlet
一起使用,或者你应该声明一个RequestContextListener
。如果会话不存在,也会创建一个。brtdzjyr2#
更简便的办法是:
x7yiwoj43#
如果您访问本主题是为了在WebSockets中找到解决方案,以下内容可能对您有用;