Appearance
统一网关 gateway-service
添可路由目前主要由三个功能模块:
Auth Token校验- 路由功能管理;
- 无需校验
Token URL管理; IP、URL白名单和黑名单管理;
Auth Token校验
会对所有经过路由的Web请求进行授权Token校验管理。
路由功能管理
主要包含对路由功能的增删改查,目前功能都已经在添可后台管理中进行维护管理。
路由增删改后都会同步刷新路由配置,一般会有一定的延时,得1-2分钟后该新增、修改、删除才生效。
路由功能同样包含Spring Cloud Gateway的完整功能,过滤器Filter和断言Predicate都可以在新增、修改的时候进行配置。
Spring Cloud Gateway的说明文档请参考下列链接:
无需校验Token URL管理
主要包含对无需校验Token URL的管理,功能也已经在添可后台管理系统中进行维护管理。
无需校验Token URL管理的是指,有的接口URL不需要校验或者没办法校验Token:
- 注册接口、登录接口等,刚开始没登录肯定是没有
Token的,所以有的链接无法校验Token; - 另外还有一些静态资源,比如
js、css文件等,也是不需要校验Token的; - 其他有的项目的
Swagger接口文档,也需要开放出来。
目前URL校验已经支持通配符配置,使用的是工具类AntPathMatcher进行校验的,具体可参考AntPathMatcher的说明文档。
通配符简单说明如下:
?匹配1个字符;*匹配0个或多个字符;**匹配路径中的0个或多个目录;{spring:[a-z]+}将正则表达式[a-z]+匹配到的值,赋值给名为spring的路径变量。(P.S.:必须是完全匹配才行,在SpringMVC中只有完全匹配才会进入controller层的方法)。
示例
符号
??要求必须为一个字符,并且不能是代表路径分隔符的/java@RequestMapping("/example?") @ResponseBody public String index(){ System.out.println("hello world"); return "hello world"; }结果
example false 404错误(必须要有一个字符) example/ false 404错误(不能为"/") exampleab false 404错误(不能是多个字符) examplea true 输出 hello world
符号
**,虽然可以匹配多个任意的字符,如果你以为*可以替代**那就错了,*代表的多个任意字符组成的字符串不能是个目录 或者说路径,也就是说,*并不能拿来替代**java@RequestMapping("/example*") @ResponseBody public String index(){ System.out.println("hello world"); return "hello world"; }结果
example true 输出 hello world(可以为0字符) example/ true 输出 hello world(可以为"/") examplea true 输出 hello world(可以为1个字符) exampleabc true 输出 hello world(可以为多个字符) example/a false 404错误("/a"是一个路径)
符号
**0个或多个目录,
**代表的字符串本身不一定要包含/java@RequestMapping("/example/**/a") @ResponseBody public String index(){ System.out.println("hello world"); return "hello world"; }结果
example/a true 输出 hello world(可以为0个目录) example/x/a true 输出 hello world(可以为一个目录) example/x/z/c/a true 输出 hello world(可以为多个目录)
符号
{spring:[a-z]+}正则表达式
[a-z]+匹配到的值,赋值给名为spring的路径变量java@RequestMapping("/example/{username:[a-b]+}") @ResponseBody public String index(@PathVariable("username") String username){ System.out.println(username); return username; }结果
example/ab true 输出 ab example/abbaaa true 输出 abbaaa example/a false 404错误 example/ac false 404错误
IP、URL白名单和黑名单管理
白名单
允许某个或某些IP访问某个或某几个接口URL,跟路由服务ID关联,一个路由服务ID只允许有一个白名单配置;
黑名单
不允许某个或某些IP访问某个或某几个接口URL,同样也跟路由服务ID关联,一个路由服务ID只允许有一个黑名单配置;
目前白名单管理和黑名单管理暂不支持通配符配置,后期迭代会将该功能添加上。
