我们正在使用具有spring security的spring boot来实现查询接口。我想要做的是只允许每个用户一次运行固定数量的查询。查询可能需要很长时间,用户可能会比我们的响应更快地发送重复请求。我希望控制器一次只能计算一个子集请求,并且我必须实现一些关于响应请求的逻辑。
为此,我需要知道给定用户的会话令牌。有没有一种简单的方法可以在控制器的方法中得到它?
答案 0 :(得分:11)
如果您想在控制器中获取sessionId,您可以使用
RequestContextHolder.currentRequestAttributes().getSessionId();
答案 1 :(得分:10)
我发现更容易添加参数' HttpSession session'在您的请求映射中:
@GetMapping(value = "/hello")
public String home(HttpSession session) {
String sessionId = session.getId();
System.out.println("[session-id]: " + sessionId);
...
return "anyPage";
}