温州机械网站建设,交互网站模板,品牌设计公司哪里,光伏发电国家最新政策目录
方法一 RequestHeader
方法二 使用Feign的Interceptor
步骤一 实现RequestInterceptor接口
步骤二#xff1a;配置Feign 通常微服务对于用户认证信息解析有两种方案
在 gateway 就解析用户的 token 然后路由的时候把 userId 等相关信息添加到 header 中传递下去。在…目录
方法一 RequestHeader
方法二 使用Feign的Interceptor
步骤一 实现RequestInterceptor接口
步骤二配置Feign 通常微服务对于用户认证信息解析有两种方案
在 gateway 就解析用户的 token 然后路由的时候把 userId 等相关信息添加到 header 中传递下去。在 gateway 直接把 token 传递下去每个子微服务自己在过滤器解析 token
现在有一个从 A 服务调用 B 服务接口的内部调用业务场景无论是哪种方案我们都需把 header 从 A 服务传递到 B 服务。
方法一 RequestHeader
在请求调用方的微服务方法头中添加RequestHeader用来接收用户端请求时传入的token RequestMapping(/deleteByOpenId)
public Object deleteByOpenId(RequestParam(opendId) String opendId, RequestHeader(token) String token) {Object integer appMpLoginAuthFeginClient.deleteByOpenId(opendId, token);return integer;
}
这里获取到header中的“token”在采用Feign调用其他微服务时将获取到的Token传入到下一个微服务的请求头中
RequestMapping(/rest/user-service/in/mpLoginAuth/deleteByOpenId)
Object deleteByOpenId(RequestParam(opendId) String opendId, RequestHeader(token) String token);
这里的RequestHeader的意思是将参数token放入到下个请求的请求头header中。 方法二 使用Feign的Interceptor 步骤一 实现RequestInterceptor接口 重写RequestInterceptor接口的apply获取到token
public class TokenRequestIntecepor implements RequestInterceptor {Overridepublic void apply(RequestTemplate requestTemplate) {RequestAttributes requestAttributes RequestContextHolder.getRequestAttributes();ServletRequestAttributes srat (ServletRequestAttributes) requestAttributes;HttpServletRequest request srat.getRequest();String token request.getHeader(token);if (StringUtils.isNotBlank(token)) {//将token传递出去 requestTemplate.header(token, token); } } }}}
} 先获取到HTTPServletRequest接着在从request中获取到header的“token”将这个token传递给requestTemplateInterceptor实现之后还需要对这个Interceptor设置配置 步骤二配置Feign application.yaml文件中添加如下配置 feign:client:config:default:loggerLevel: fullrequestInterceptors: com.example.feigndemo.interceptor.TokenRequestIntecepor