我们使用具有spring security的spring boot来实现查询接口.我想要做的是只允许每个用户一次运行固定数量的查询.查询可能需要很长时间,用户可能会比我们的响应更快地发送重复请求.我希望控制器一次只计算一个子集请求,我将不得不实现一些逻辑来确定响应的请求.
为此,我需要知道给定用户的会话令牌.有没有一种简单的方法可以在控制器的方法中得到它?
如果你想在控制器中获取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"; }