Zuul鉴权和添加用户服务
要实现如下的功能
先创建一个user服务
加上客户端的注解
从配置中心获取user服务的配置
user服务在配置文件的配置,要引入redis的配置
启动成功后在eureka管理页面查看注册的服务,看到服务以及注册上来了
因为user服务以后肯定是要对外提供接口的,所以改造成多模块,目录结构如下
把刚开始的user的pom文件里面dependencies以及build全部剪切到其Server的pom文件中,再次启动,启动没问题就确定多模块化正常。
user服务的要实现登录功能,我在这里就不手把手教了,代码在https://github.com/hmilyos/springCloud-user.git base分支。
需要注意的点是买家登录,我会往cookie写openid、redis写openid_具体用户的openid
买家登录
卖家登录,我会往cookie写token、redis写token_uuid
卖家登录
涉及到需要的代码有order:https://github.com/hmilyos/springCloud-order.git auth分支
product:https://github.com/hmilyos/springCloud-product.git auth分支 表结构在其doc文件夹下
user: https://github.com/hmilyos/springCloud-user.git base分支
api-gateway: https://github.com/hmilyos/springCloud-api-gateway.git auth分支
把代码pull下来后,先把api-gateway里面这两个买家卖家的过滤器都置为false,关闭不启用它
然后启动项目,通过网关来访问order的create、finish以及product的list的api,都是能访问的
order的finish访问正常
order的create访问正常
product的list的访问正常
此外还需要在api-gateway,配置一下,可以传递敏感信息
这时候针对create和finish做权限限制了,为了后期的维护,最好是分开来写这些判断
针对创建订单,要判断是否登录,同时还得是买家角色,在是否开启这里判断当前请求的是不是创建订单,是就开启,不是就不启用。
买家过滤器
先判断是否请求的是finish接口,是就启用,不是就不启用,
是就继续判断是否登录,登录角色是不是卖家
卖家过滤器
在未登录的情况下,访问create失败
未登录,create访问失败
在未登录的情况下,访问finish失败
在未登录的情况下,访问finish失败
因为list是不用做权限判断的,所以访问正常
在未登录的情况下,访问list成功
登录买家账号
登录买家账号成功
在买家登录的情况下,访问finish失败
清除cookie和redis信息后,登录卖家账号
登录卖家账号
在卖家登录的情况下,访问finish成功
在卖家登录的情况下,访问finish成功
在卖家登录的情况下,访问create失败
在卖家登录的情况下,访问create失败
如此,我们针对买家卖家的访问权限就完成了。