栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Feign自定义拦截器添加认证信息

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Feign自定义拦截器添加认证信息

Feign拦截器和SpringMvc拦截器的区别

SpringMvc的拦截器:


Feign的拦截器:

实现代码

实现拦截器这里需要实现 feign包下提供的一个接口RequestInterceptor,并实现apply方法
你的拦截逻辑都可以写在apply这个方法中

@Component
public class MyFeignInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
    	// 拦截逻辑 。。。
    }
}

你可以在里面打印一些日志、也可以设置这个新请求的header、query、uri等信息

通常情况下我们会在拦截器的header里面增加一些认证信息

@Component
public class MyFeignInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
    	
    	ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
    	// 获取当前线程 老请求的httpServletRequest 
    	HttpServletRequest httpServletRequest = servletRequestAttributes.getRequest();
    	if(httpServletRequest != null) {
    		// 从老请求的request对象中拿到header中的authorization信息
    		String authorization = httpServletRequest.getHeader("authorization");
    		// 为requestTemplate这个新的请求对象 传递 用户信息请求头
            requestTemplate.header("Authorization", authorization);
    	}
    }
}

然后可以手动生成该类的bean对象 注入到spring容器中(其实上面的类已经加上@Component注解了,不手动加应该也没问题)

@Configuration
public class FeignAutoConfiguration
{
    @Bean
    public RequestInterceptor requestInterceptor()
    {
        return new FeignRequestInterceptor();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331639.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号