【发布时间】:2017-07-25 15:05:35
【问题描述】:
我正在尝试在微服务之间发出请求,以检索具有相同角色的用户列表。为此,首先我在微服务 1 内的前端和后端之间发出请求。接下来,我从微服务 1 后端调用微服务 2 中的端点,但会话 ID 在其中丢失,我可以检索上下文。 我正在使用 spring security 和 Redis 进行会话控制。 手动,我从微服务 1 中检索会话 ID,并将其作为第二次调用的标头的属性添加到微服务 2。但它不起作用。
String sessionID= RequestContextHolder.currentRequestAttributes().getSessionId();
RestTemplate rest = new RestTemplate();
HttpHeaders headers= new HttpHeaders();
headers.set("Session",sessionID);
HttpEntity<ResponseData> entity = new HttpEntity<ResponseData>(headers);
ResponseEntity<ResponseData> responseEntity =rest.exchange(targetApi, HttpMethod.GET, entity,ResponseData.class);
【问题讨论】:
-
复制所有标头(可能有身份验证信息)以及 cookie(会话通常添加到 cookie)。顺便说一句,如果 2 个服务在不同的 JVM 上工作,它们可能根本没有公共会话
-
两者在同一个JVM,会话由Redis控制
标签: java spring rest security microservices