我使用Spring Security,我在登录时发现了奇怪的框架行为。 Spring Security WebAuthenticationDetails
具有从HTTP请求获取的参数sessionId
,并且一切都应该是好的,但实际上REST请求给了我另一个会话ID。如果我将自动装配HttpSession
然后从中获取会话ID,我将获得类似Spring的ID。所以我似乎有一个用户的两个id。这是对的吗?或者我错过了什么?
编辑:
例如,此类将提供一些会话ID
public class AuthenticationEventListener implements ApplicationListener<AbstractAuthenticationEvent> {
@Autowired
HttpSession httpSession;
@Override
public void onApplicationEvent(AbstractAuthenticationEvent event) {
if (event instanceof AuthenticationSuccessEvent) {
LoggedUser loggedUser = (LoggedUser) event.getAuthentication().getPrincipal();
loggedUser.initSessionParams(event.getAuthentication());
String sessionId = httpSession.getId();
}
}
}
这个方法将给出另一个方法:
@RequestMapping(value = "/chart")
public Map getTestStatusesChart(HttpServletRequest request) {
String sessionId= request.getSession(false).getId();
return null;
}