Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在控制器中获取Spring启动/安全性的会话令牌_Java_Spring_Spring Security - Fatal编程技术网

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

Java 在控制器中获取Spring启动/安全性的会话令牌,java,spring,spring-security,Java,Spring,Spring Security,我们使用SpringBoot和SpringSecurity来实现一个查询接口。我想做的是一次只允许每个用户运行固定数量的查询。查询可能需要很长时间,用户发送重复请求的速度可能比我们的响应速度快。我希望控制器一次只计算一个子集请求,并且我必须实现一些逻辑来响应哪些请求 为此,我需要知道给定用户的会话令牌。有没有一种简单的方法可以在控制器的方法中实现这一点?如果您想在控制器中获取sessionId,可以使用 RequestContextHolder.currentRequestAttributes(

我们使用SpringBoot和SpringSecurity来实现一个查询接口。我想做的是一次只允许每个用户运行固定数量的查询。查询可能需要很长时间,用户发送重复请求的速度可能比我们的响应速度快。我希望控制器一次只计算一个子集请求,并且我必须实现一些逻辑来响应哪些请求


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

如果您想在控制器中获取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";  
}

好的,这将在他们登录时保持不变?如果他们在会话中打开了两个窗口,这有关系吗?有没有办法区分这一点?当用户登录时,如果用户在同一会话(同一浏览器)中打开两个窗口,情况也会相同。