如何保证在springboot微服务通过feign调用时token不丢失
feign的令牌传递,参数传递
·
在微服务的概念中我们经常会通过一个入口去调用A,然后A去请求B,B去请求C这个时候我们会发现从A服务接收到请求去调用B时会遇到token丢失的情况,如果是把token里的数据解析出来再去进行传递明显不合理,也会增加接口的参数个数,那我们怎么保证通过feign调用时不丢失掉token或者其他重要请求参数呢?这里会用到一个非常重要的类 RequestInterceptor 这个是feign包里提供的一个发送请求的拦截器,实现这个类重写apply方法我们可以定制一些模板参数,可以理解为每次发送请求时固定携带的参数。下面上代码。这里的代码时模拟传递Authorization参数的情况,如果有其他参数需要传递加上即可。
@Component
public class FeignInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes != null) {
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
if (request != null) {
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
if (headerName.equalsIgnoreCase("Authorization")) {
String token = request.getHeader(headerName);
//传递令牌
template.header(headerName, token);
}
}
}
}
}
}

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)