Java 在控制器中获取Spring启动/安全性的会话令牌
我们使用SpringBoot和SpringSecurity来实现一个查询接口。我想做的是一次只允许每个用户运行固定数量的查询。查询可能需要很长时间,用户发送重复请求的速度可能比我们的响应速度快。我希望控制器一次只计算一个子集请求,并且我必须实现一些逻辑来响应哪些请求Java 在控制器中获取Spring启动/安全性的会话令牌,java,spring,spring-security,Java,Spring,Spring Security,我们使用SpringBoot和SpringSecurity来实现一个查询接口。我想做的是一次只允许每个用户运行固定数量的查询。查询可能需要很长时间,用户发送重复请求的速度可能比我们的响应速度快。我希望控制器一次只计算一个子集请求,并且我必须实现一些逻辑来响应哪些请求 为此,我需要知道给定用户的会话令牌。有没有一种简单的方法可以在控制器的方法中实现这一点?如果您想在控制器中获取sessionId,可以使用 RequestContextHolder.currentRequestAttributes(
为此,我需要知道给定用户的会话令牌。有没有一种简单的方法可以在控制器的方法中实现这一点?如果您想在控制器中获取sessionId,可以使用
RequestContextHolder.currentRequestAttributes().getSessionId()代码>我发现在请求映射中添加参数“HttpSession session”更容易:
@GetMapping(value = "/hello")
public String home(HttpSession session) {
String sessionId = session.getId();
System.out.println("[session-id]: " + sessionId);
...
return "anyPage";
}
好的,这将在他们登录时保持不变?如果他们在会话中打开了两个窗口,这有关系吗?有没有办法区分这一点?当用户登录时,如果用户在同一会话(同一浏览器)中打开两个窗口,情况也会相同。