aby*_*byx 23 java spring spring-security
出于记录目的,我想创建一个记录器,自动将当前会话的ID添加到记录的行.
对于登录用户,这不是问题:
((WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails())
.getSessionId()
Run Code Online (Sandbox Code Playgroud)
问题是,在用户登录之前getAuthentication()返回null.有没有另一种方法来获取会话ID而不引用当前响应或任何类型的东西?
谢谢!
axt*_*avt 52
你可以用
RequestContextHolder.currentRequestAttributes().getSessionId();
Run Code Online (Sandbox Code Playgroud)
这依赖于Spring RequestContextHolder,所以它应该与Spring MVC一起使用,DispatcherServlet或者你应该RequestContextListener声明.如果不存在,也将创建会话.
小智 9
更简单的方法是:
@GetMapping(path = "/foo")
public void foo(HttpSession session) {
String sessionId = session.getId();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42839 次 |
| 最近记录: |