这一篇主要是写权限控制,在网关校验权限。
大体思路:当用户访问一个url,在网关校验token是否合法,然后调用用户服务是否该用户有权限访问并返回一个boolean类型的值,网关检查返回的值来判断是否通过,没有权限拒绝访问
数据库已上传到项目中
首先是用户微服务需要增加接口供网关调用
根据用户id,查询拥有的角色,然后在查找拥有的资源,我用的是请求方式|url,拼接的字符串。
上面会访问数据库次数过多,可以把权限放在缓存中,这里就不说了。
上面显示具有GET 请求 的user/info/**接口权限和user/hello访问权限,当访问其它接口是就会报授权失败,上面鉴权逻辑很简单,就不细说了,user微服务改造完成。
接下来改造网关了,在配置类中添加配置
当网关token正确后会进入permissionService.hasPermission()方法,然后调用user服务是否有这个接口 的权限。
权限异常类也需要配置
最后在配置类中注入进去。
测试:
目前有两个权限
请求方式get访问user/hello接口
可以访问,
当我们访问请求方式get访问user/hello66接口。就会报没有权限
一个简易的权限控制就做到了。具体的配置还是看源代码。