准备第二个资源服务器
集成feign
resource1
导包
开启feign
写接口-》打注解 加上调用的服务名字
拷贝r2的controller方法
在r1controller调用
访问resource 控制层测试
访问报错没有权限
通过feign接口访问r2没有权限
可以在r1添加feign拦截器添加token
但是微服务多了,每一个都要加拦截器
所以新建一个feign拦截器模块
在feign拦截 模块写一个类实现RequestInterceptor
实现apply方法 拦截请求
方法实现逻辑
1获取r1中请求头
使用请求助手方法获取请求上下文
在获取请求头
在去获取token
2把token加到请求头里面
template.head();
谁要使用就让谁依赖feign拦截模块
r1依赖 测试
集成熔断器
会造成的问题:转发失效,会那拿不到token 隔离模式,线程池导致请求头拿不到 把隔离模式改成信号量,
把线程一的token设置到线程二中
开启熔断器 创建托低方法
使用zuul统一鉴权
如果不去做zuul统一鉴权,那么每个微服务都会去集成auth2
并效率要高些,在zuul,发现没有权限直接打回,不用统一鉴权就要请求到微服务去效验更深一些。
zuul配置 导包
配置资源服务
新建一个类
使用jwt存储token
写一个内部类
复写两个方法
配置资源服务安全性配置
配置web安全配置
根据不同的服务配置权限的不同的范围
配置websecurity 因为zuul没有控制成
直接全部放行
跨域配置
通过zuul获取token
通过zuul访问资源
zuul解析token后放在security上下文里面
转发用户信息 明文token
定义一个filter
复写三个方法
在run方法里面
使用map把信息封装到map中
权限需要转成list
在资源微服务中:
接收zuul 传过来token的filter定义
不用配置auth2但是要配置security,因为要知道当前用户有什么权限
auth全部放行,不做校验