框架结构:center+feign+spring session+redis+service(多个) feign端代码:
public RequestInterceptor requestInterceptor() {
return requestTemplate -> {
ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attrs != null) {
HttpServletRequest request = attrs.getRequest();
System.out.println("feign:"+attrs.getSessionId());
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
Enumeration<String> values = request.getHeaders(name);
while (values.hasMoreElements()) {
String value = values.nextElement();
requestTemplate.header(name, value);
}
}
}
if(!request.isRequestedSessionIdValid()){
request.setAttribute(SessionRepositoryFilter.INVALID_SESSION_ID_ATTR,null);
requestTemplate.header("cookie","SESSION="+attrs.getSessionId());
}
}
};
}
feign在第一次转发请求后,服务节点会产生一个session,这个sessionId和feign自身产生的不一致,redis中也是出现多条记录,后续的访问都能正常同步了,sessionId都一致了,未能找到原因,跪求各位大神
本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。