gateway:网关,我们都知道网关的作用就是对系统的所有请求,网关都会进行拦截,然后做一些操作(例如:设置每个请求的请求头httpHeader,身份认证等等)此时一般会使用到网关过滤器,创建一个过滤器去实现GlobalFilter接口
jwt:JSON-WEB-TOKEN,这里就不过多解释了,同学们可以自行搜索相关文章,它主要包含三个部分,更好的生成token的一种行业规范,主要作用就是令牌校验。
{
header:xxx,
payload:xxx,
singature:xxx
}
redis的主要作用就是为了存放用户信息,该用户信息主要包含以下几个字段
{
userCode:xxx,
language:xxx,主要是为了进行国际化语言配置比如ZH-CN 、EN
menuApu:["xxx","xxx",..."xxx"] 用户对应的菜单权限列表API
jwtToken:xxx 必须拥有这个字段,为了防止同一个用户在不同机器上登录进行操作
}
httpHeader的主要作用就是存放userCode,用于任何请求都可以获取到当前操作的用户名,比如当我要添加一个新增接口或者更新接口,一般会有两个字段,一个是creator,一个是modifier,那么这两个值就可以直接取请求头的userCode。
还有就是存放language,为了进行国际化语言切换。
所以现在我先给大家画一个图,待会写的代码也是按照这个逻辑,方便大家加深理解与记忆。
现在看一下代码逻辑:
我们创建一个gateway全局过滤器:AuthTokenGlobalFilter
实现GlobalFilter接口,重写如下方法:
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)