使用Spring Security检索会话ID
出于记录目的,我想创建一个记录器,自动将当前会话的ID添加到记录的行。
对于登录用户,这不是问题:
((WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails()) .getSessionId()
问题是,在用户登录之前, getAuthentication()
返回null
。 是否有另一种获取会话ID的方法,而没有引用当前响应或任何类型的东西?
谢谢!
你可以用
RequestContextHolder.currentRequestAttributes().getSessionId();
这依赖于Spring的RequestContextHolder
,因此它应该与Spring MVC的DispatcherServlet
一起使用,或者你应该声明一个RequestContextListener
。 如果不存在,也将创建会话。