一、微服务间认证
以电商系统为例,用户访问购物车微服务,购物车微服务需要调用订单微服务,微服务之间并没有传递头文件,所以我们可以定义一个拦截器,每次微服务调用之前都先检查下头文件,将请求的头文件中的令牌数据再放入到header中,再调用其他微服务即可。
定义拦截器实现微服务间认证:
@Override
public void apply(RequestTemplate requestTemplate) {
//传递令牌( 拦截器传递Jwt 拦截加上请求头)
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 ("authorization".equals(headerName)){
String headerValue = request.getHeader(headerName); // Bearer jwt
//传递令牌
requestTemplate.header(headerName,headerValue);
}
}
}
}
}
在购物车微服务的启动类,添加拦截器声明:
@Bean
public FeignInterceptor feignInterceptor(){
return new FeignInterceptor();
}
浙公网安备 33010602011771号