SpringCloud OpenFeign token中转

OpenFeign 的本质是调用指定服务的 Controller。

前后端分离项目,调用 Controller 是需要传递 token 的。

OpenFeign 并不会自动携带 token 去访问 Controller,所以需要手动进行中转。

手动进行 token 中转比较简单,只需要一个配置类即可实现。

import cn.hutool.core.util.ObjUtil;
import feign.RequestInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;

@Slf4j
@Configuration
public class OpenFeignConfig {
    
    @Bean
    public RequestInterceptor requestInterceptor() {
        
        return requestTemplate -> {

            String token;
            // 请求方
            ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            if (ObjUtil.isEmpty(requestAttributes)) {
                return;
            } else {
                // 获取请求方token
                HttpServletRequest request = requestAttributes.getRequest();
                token = request.getHeader("Authorization");
            }
            // 被请求方设置token,实现token中转
            requestTemplate.header("Authorization", token);
        };
    }
    
}
posted @   天航星  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-09-13 Git 12 IDEA上传本地项目到远程
点击右上角即可分享
微信分享提示