首页 > 其他分享 >feign携带token

feign携带token

时间:2024-04-18 13:44:30浏览次数:18  
标签:feign HEADER ServletRequestAttributes 携带 request requestTemplate header token ge

方式1:

@Configuration
public class FeignConfig implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
requestTemplate.header("token", request.getHeader("token"));
}
}

}
方式2:

public class BladeFeignRequestHeaderInterceptor implements RequestInterceptor {

@Override
public void apply(RequestTemplate requestTemplate) {
HttpHeaders headers = BladeHttpHeadersContextHolder.get();
ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
if (servletRequestAttributes != null) {
HttpServletRequest request = servletRequestAttributes.getRequest();
String TenantId = request.getHeader(TokenConstant.TENANT_ID);
String authorization = request.getHeader(SecureConstant.BASIC_HEADER_KEY);
String EcchAuth = request.getHeader(TokenConstant.HEADER);
// 设置请求头信息
requestTemplate.header(TokenConstant.TENANT_ID, TenantId);
requestTemplate.header(SecureConstant.BASIC_HEADER_KEY, authorization);
requestTemplate.header(TokenConstant.HEADER, EcchAuth);
requestTemplate.header(TraceConstant.HEADER_TRACE_ID, TraceIdUtil.get());
if (headers != null && !headers.isEmpty()) {
headers.forEach((key, values) -> {
values.forEach(value -> requestTemplate.header(key, value));
});
}
}
}

}

标签:feign,HEADER,ServletRequestAttributes,携带,request,requestTemplate,header,token,ge
From: https://www.cnblogs.com/zqlmianshi/p/18143340

相关文章

  • Feign日志 - 自定义 info级别打印
    背景由于feign,默认只有debug的level,才能打印出日志。不太符合一般项目的loginfolevel的约定。因此决定自定义feign的log打印。目的在infolevel下,可以打印feign日志寻找线索打开openfeign的核心包目录寻找log相关类 feign-1.png通过FeignLoggerfactor......
  • 什么是token,为什么需要token
    1.为什么需要token随着互联网的发展,为了更安全,以及更好的用户体验,逐渐产生了token这个技术方案之所以使用token是因为http/https协议本身是无状态的,不能进行信息的存储(cookie可以进行信息存储,但存在一些限制)token的作用是为了加强用户信息安全性,而添加的一层验证,去......
  • FeignClient的拦截器中RequestContextHolder.getRequestAttributes()值为null
    一、遇到问题在@FeignClient的拦截器中获取token,我首先获得RequestContextHolder.getRequestAttributes(),结果发现值为null。``二、资料查找内事不决问百度,感觉百度了一下,很快我发现其他人也有通用报null的问题,只是他们是出现在子线程中,所以我猜测@FeignClient调用的时候为异......
  • Jmeter模拟用户并发token参数化
    场景:项目需求,模拟用户并发签到,要求签到数据能记录到数据库。分析:签到接口需要tocken,单个tocken只能签到一次,需要多个tocken一起并发。脚本如下:        解决返回的乱码问题。  ......
  • SpingBoot项目Tomcat假死,导致http(openfeign)请求无法响应问题定位
    项目简介:<spring-boot.version>2.3.2.RELEASE</spring-boot.version><spring-cloud.version>Hoxton.SR12</spring-cloud.version>使用docker进行项目部署问题描述:项目中代码中大量使用异步多线程操作,没个异步过程中大量掺杂数据库查询、Redis查询、Feign调用、RabbitMq发送接收......
  • SpringBoot通过token实现用户互踢功能
    认识token所谓token,既用户能够在一定时间内证明自己身份的一长串字符串。正常的使用流程为:用户第一次登入——》服务器为该用户签发一份token——》进行其他服务请求时携带上token——》服务器判断此token在有效期内——》放行此次请求。在上述过程中,用户只有在请求特定的接......
  • jsonpath提取响应结果,token鉴权处理
    importtimeimportuuidimportrequestsimportpprintfromjsonpathimportjsonpathfromtest_image_codeimportImageCodeclassManage:def__init__(self):self.header={"locale":"zh_CN"}self.login_url='......
  • 安卓开发获取从上个界面携带过来的数据
    在安卓开发中,可以通过Intent来获取从上一个界面携带过来的数据。下面是获取数据的步骤:1.在上一个界面中,使用Intent对象传递数据到下一个界面。示例代码如下:```javaIntentintent=newIntent(CurrentActivity.this,NextActivity.class);intent.putExtra("key",data);//key......
  • 多线程环境中使用MyBatis时避免出现没有token的问题
    //很重要,在多线程没有token下面三行可以解决mybatis方法报错//1.通过当前的WebUtil.getRequest()获取Servlet请求的属性ServletRequestAttributesservletRequestAttributes=newServletRequestAttributes(WebUtil.getRequest());//2.将获取到的Servlet请求属性设置......
  • CancellationTokenSource Cancel IsCancellationRequested
    //xaml<Windowx:Class="WpfApp37.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic......