一、微服务间认证

以电商系统为例,用户访问购物车微服务,购物车微服务需要调用订单微服务,微服务之间并没有传递头文件,所以我们可以定义一个拦截器,每次微服务调用之前都先检查下头文件,将请求的头文件中的令牌数据再放入到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();
}
posted on 2026-01-11 22:19  努力--坚持  阅读(9)  评论(0)    收藏  举报