获取控制器中Spring启动/安全性的会话令牌

时间:2015-12-03 17:27:54

标签: java spring spring-security

我们正在使用具有spring security的spring boot来实现查询接口。我想要做的是只允许每个用户一次运​​行固定数量的查询。查询可能需要很长时间,用户可能会比我们的响应更快地发送重复请求。我希望控制器一次只能计算一个子集请求,并且我必须实现一些关于响应请求的逻辑。

为此,我需要知道给定用户的会话令牌。有没有一种简单的方法可以在控制器的方法中得到它?

2 个答案:

答案 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";  
}