在微服务系统中,为了保证微服务系统的安全,常常使用jwt来鉴权,但是服务内部的相互调用呢。经常有人在微信上问我,我给出一个解决办法,采用Feign的拦截器。
在Feign中开启了hystrix,hystrix默认采用的是线程池作为隔离策略。线程隔离有一个难点需要处理,即隔离的线程无法获取当前请求线程的Jwt,这用ThredLocal类可以去解决,但是比较麻烦,所以我才用的是信号量模式。
在application.yml配置文件中使用一下配置:
1 | hystrix.command.default.execution.isolation.strategy: SEMAPHORE |
写一个Feign的拦截器,Feign在发送网络请求之前会执行以下的拦截器,代码如下:
1 |
|