第8节-网关怎么实现多系统权限隔离?
本节介绍怎么网关怎么实现多系统权限隔离。例如:有2个微服务
demo
和demo2
,都有自己的用户权限信息,怎么使用同一个网关进行权限的隔离?
1. 修改微服务demo
在微服务
wueasy-cloud-demo
中,增加业务key,区分不同的业务。
wueasy :
gateway:
session:
business-key: demo1 #业务key
2. 新增一个微服务demo2
拷贝一份
wueasy-cloud-demo
创建一个新的微服务2
2.1 修改服务端口号
避免微服务端口号重复,这里修改为
8081
server :
port : 8081 #服务端口号
2.2 修改服务端口号
这里的微服务名称为
demo2
spring:
application:
name: demo2
2.3 修改微服务业务key
在微服务
wueasy-cloud-demo2
中,增加业务key,区分不同的业务。
wueasy :
gateway:
session:
business-key: demo2 #业务key
3. 修改网关
3.1 增加微服务2路由
如下面配置,通过
/demo/**
访问demo微服务,通过/demo2/**
访问demo2微服务
spring:
cloud:
gateway:
discovery:
locator:
enabled: false
lowerCaseServiceId: true
routes:
- id: demo
uri: lb://DEMO
predicates:
- Path=/demo/**
filters:
- StripPrefix= 1
- id: demo2
uri: lb://DEMO2
predicates:
- Path=/demo2/**
filters:
- StripPrefix= 1
3.2 修改session配置
指定不同的url地址,配置不同的
business-key
,配置参考session使用
wueasy :
gateway:
session: #session配置
type: redis #类型
redis-auto-expire: true #是否自动延期过期时间,默认true
expire: 1h #过期时间
items:
- urls: #服务1
- /demo/**
token-name: token
business-key: demo1
- urls: #服务2
- /demo2/**
token-name: token
business-key: demo2
4. 启动服务
分别启动 注册中心、微服务demo、微服务demo2、网关
5. 测试接口
5.1 微服务1登录
- 接口地址:
http://127.0.0.1:8088/demo/login
- 请求类型:
POST
- 请求参数:
{ "accountNo":"admin", "password":"123456" }
- 成功示例:
{ "errorNo": 0, "data": "demo1:1:35c8538dcfefab00d574cf2a48e93f96" }
5.2 微服务1验证接口
- 接口地址:
http://127.0.0.1:8088/demo/get
- 请求类型:
GET
- 请求参数:通过
hedaer
方式传入参数token
,值为demo1:1:35c8538dcfefab00d574cf2a48e93f96
- 成功示例:
{ "errorNo": 0, "data": "278255" }
5.3 微服务2登录
- 接口地址:
http://127.0.0.1:8088/demo2/login
- 请求类型:
POST
- 请求参数:
{ "accountNo":"admin", "password":"123456" }
- 成功示例:
{ "errorNo": 0, "data": "demo2:1:35c8538dcfefab00d574cf2a48e93f96" }
5.4 微服务2验证接口
- 接口地址:
http://127.0.0.1:8088/demo2/get
- 请求类型:
GET
- 请求参数:通过
hedaer
方式传入参数token
,值为demo2:1:35c8538dcfefab00d574cf2a48e93f96
- 成功示例:
{ "errorNo": 0, "data": "278255" }