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

相关文章

来自专栏腾讯Bugly的专栏

Bugly即将支持的ANR,精神哥告诉你是个什么鬼?

上帝说要有ANR,于是Bugly就有了ANR上报,那么ANR到底是什么? 最近很多童鞋问起精神哥ANR的问题,那么这次就来聊一下,鸡爪怎么泡才好吃...

3534
来自专栏A周立SpringCloud

实用技巧:Hystrix传播ThreadLocal对象(两种方案)

目前,Spring Cloud已在南京公司推广开来,不仅如此,深圳那边近期也要基于Spring Cloud新开微服务了。 于是,领导要求我出一套基于Spring...

5095
来自专栏Kirito的技术分享

深入理解RPC之传输篇

RPC 被称为“远程过程调用”,表明了一个方法调用会跨越网络,跨越进程,所以传输层是不可或缺的。一说到网络传输,一堆名词就蹦了出来:TCP、UDP、HTTP,同...

6297
来自专栏JMCui

Netty 系列一(核心组件和实例).

    早期的 Java API 只支持由本地系统套接字库提供所谓的阻塞函数来支持网络编程。由于是阻塞 I/O ,要管理多个并发客户端,需要为每个新的客户端So...

703
来自专栏微服务生态

跟我学Kafka之NIO通信机制

很久没有做技术方面的分享了,今天闲来有空写一篇关于Kafka通信方面的文章与大家共同学习。

493
来自专栏张善友的专栏

WCF服务在高负载下可能会变慢

KB2538826 解释了WCF服务在突发的请求下会发生的问题:当您的 WCF 服务接收请求的突发时,默认.Net I/O 完成端口 (IOCP) 线程池可能不...

1875
来自专栏醒者呆

掌握NIO,程序人生

就像新IO为java带来的革新那样,让我们也开启一段新的程序人生。 关键字:NIO,BIO,伪IO,AIO,多路复用选择器,通道,缓冲区,jdk研究,回...

3476
来自专栏服务端技术杂谈

基于Servlet3.0异步特性实现请求鉴权与转发

项目背景 在多个内网系统之上,增加一个网关服务,统一对第三方应用进行鉴权与认证,方可对内部资源服务进行访问,网关服务主要起到鉴权认证,请求转发主要借助Servl...

3385
来自专栏用户2442861的专栏

java thrift TSimpleServer TNonblockingServer THsHaServer TThreadedSelectorServer TThreadPoolServer比较

https://github.com/m1ch1/mapkeeper/wiki/Thrift-Java-Servers-Compared

492
来自专栏喵了个咪的博客空间

[PhalApi实战篇(1)]Redis队列处理异步任务

[PhalApi实战篇(1)]Redis队列处理异步任务 ? 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. ...

3144

扫码关注云+社区