JWT如何在Spring Cloud微服务系统中在服务相互调时传递

在微服务系统中,为了保证微服务系统的安全,常常使用jwt来鉴权,但是服务内部的相互调用呢。经常有人在微信上问我,我给出一个解决办法,采用Feign的拦截器。

在Feign中开启了hystrix,hystrix默认采用的是线程池作为隔离策略。线程隔离有一个难点需要处理,即隔离的线程无法获取当前请求线程的Jwt,这用ThredLocal类可以去解决,但是比较麻烦,所以我才用的是信号量模式。 在application.yml配置文件中使用一下配置:

hystrix.command.default.execution.isolation.strategy: SEMAPHORE

写一个Feign的拦截器,Feign在发送网络请求之前会执行以下的拦截器,代码如下:

import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;

/**
 * Created by fangzhipeng on 2017/7/28.
 */
@Component
public class JwtFeignInterceptor implements RequestInterceptor {

    private final String key = "Authorization";


    @Override
    public void apply(RequestTemplate template) {

        if (!template.headers().containsKey(key)) {
            String currentToken = UserUtils.getCurrentToken();
            if (!StrUtil.isEmpty(currentToken)){
                template.header(key, currentToken);
            }
        }
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏计算机视觉与深度学习基础

Leetcode 40 Combination Sum II

Given a collection of candidate numbers (C) and a target number (T), find all u...

1879
来自专栏c#开发者

BizTalk Server 2010高可用方案

BizTalk Server 2010高可用方案 本文介绍了 Microsoft BizTalk Server 中通过对主机的各层进行扩展提供高可用性的方案。...

3499
来自专栏大闲人柴毛毛

Git命令速记

生成SSH Key ssh-keygen -t rsa -C "youremail@example.com" 在用户主目录里找到.ssh目录 将id_rsa....

35010
来自专栏娱乐心理测试

[!] No `Podfile' found in the project directory.

1685
来自专栏Aloys的开发之路

版本管理工具总结

代码托管网站: https://github.com/ (Git) https://bitbucket.org/ (Git Mercurial) https:/...

2079
来自专栏Aloys的开发之路

如何合并两个Git仓库

现在需要进行合并,保留双方的历史提交记录,并将1的内容删除,合并之后的内容推送到2中。

413
来自专栏python3

SourceTree安装

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mercurial和Subversion版本控...

881
来自专栏Petrichor的专栏

git: git add --ignore-removal & git add --all 区别

在仓库中删除文件后,试图直接用 git add . 将所有删除工作提交暂存区,结果遇到了报错:

1964
来自专栏WebDeveloper

git常用命令

1142
来自专栏LinXunFeng的专栏

解决Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named

1744

扫码关注云+社区