【发布时间】:2020-09-28 21:41:50
【问题描述】:
我正在尝试使用 spring SecurityContextHolder 获取会话 ID。如下所示
public static String getSessionId(){
String id = null;
SecurityContext secContext = SecurityContextHolder.getContext();
Authentication auth = secContext.getAuthentication();
if(auth!=null){
WebAuthenticationDetails details = (WebAuthenticationDetails) auth.getDetails();
if(details!=null){
id = details.getSessionId();
}
}
return id;
}
大多数时候details.getSessionId(); 是空的。有时它会返回 sessionId。我想知道是什么原因造成的。这是访问 sessionId 的正确方法吗?
我试过RequestContextHolder.currentRequestAttributes().getSessionId();
这每次都会正确返回会话ID。我想知道这两种访问会话ID的方式之间的区别。
【问题讨论】:
-
这是访问sessionId的正确方式吗?可能不是。你不需要spring security api,但是servlet api:
request.getSession().getId() -
RequestContextHolder.currentRequestAttributes().getSessionId() 怎么样?访问会话ID?由于我无法访问类中的请求对象,因此我正在尝试获取会话 ID。
标签: java spring session tomcat