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 条评论
登录 后参与评论

相关文章

来自专栏个人分享

Netty的TCP粘包/拆包(源码二)

假设客户端分别发送了两个数据包D1和D2给服务器,由于服务器端一次读取到的字节数是不确定的,所以可能发生四种情况:

1074
来自专栏分布式系统进阶

KafkaController分析3-ControllerChannelManager

使用NetworkClient连接到broker node, 使用selector处理网络IO;

551
来自专栏Jed的技术阶梯

Kafka 新版消费者 API(三):以时间戳查询消息和消费速度控制

kafka 在 0.10.1.1 版本增加了时间索引文件,因此我们可以根据时间戳来访问消息。 如以下需求:从半个小时之前的offset处开始消费消息,代码示例...

6382
来自专栏coder修行路

Java基础(四)线程快速了解

其实可以理解是java的压缩包 方便使用,只要在classpath设置jar路径即可 数据库驱动,ssh框架等都是以jar包体现的

920
来自专栏JackieZheng

RabbitMQ入门-Routing直连模式

Hello World模式,告诉我们如何一对一发送和接收消息; Work模式,告诉我们如何多管齐下高效的消费消息; Publish/Subscribe模式,告...

23410
来自专栏技术专栏

logback日志写入kafka遇到的那些坑

这两天在学习storm实时流的时候需要将logback日志写入kafka,这期间遇到了很多坑,这里把遇到的坑和解决的问题记录一下,和大家共勉

3143
来自专栏Java 源码分析

Java多线程JUC

1. volatile 关键字 多线程访问的时候,一个比较严重的问题就是内存不可见,其实在内存访问的时候每一个线程都有一个自己的缓冲区,每次在做修改的时候都是从...

2643
来自专栏JMCui

Java 原生网络编程.

    Java 语言从其诞生开始,就和网络紧密联系在一起。在 1995 年的 Sun World 大会上,当时占浏览器市场份额绝对领先的网景公司宣布在浏览器中...

882
来自专栏猿天地

Netty4自带编解码器详解

前言 本篇文章是Netty专题的第五篇,前面四篇文章如下: 高性能NIO框架Netty入门篇 高性能NIO框架Netty-对象传输 高性能NIO框架Netty-...

2756
来自专栏码匠的流水账

聊聊kafka client chunkQueue 与 MaxLag值

前面一篇文章讨论了ConsumerFetcherManager的MaxLag与ConsumerOffsetChecker的lag值的区别。但是关于MaxLag的...

461

扫码关注云+社区