商城项目---畅购chapter10(第十天)
第10章 购物车
1 SpringSecurity权限控制
在UserService 中引入依赖包和放入公钥
引入配置类
进行授权验证测试
加入请求参数之后请求成功:Key: Authorization |Value: bearer 加空格+Token才可以进行授权认证 成功
Controller
未授权角色方法拒绝访问
更换方法后查询成功,前面的findAll方法只允许admin角色才可以访问
对接微服务网关:对token进行校验判断,如果token中有bearer 就放行
完成测试:
对User微服务进行放行设置
开始创建远程接口调用的userFeign,添加maven依赖
在AuthApplication中加入@EnableFeign(bassePackage)开启Fegin调用
在创建FeignClinet里面的映射前面不能加/,不然很容易和RequestMpping搞错
进行验证测试:注意这个地址的url因为是用户微服务对接的微服务网关,端口号和请求地址都进行了改变,请求的地址应为http://localhost:8001/api/user/login?username=szitheima&password=szitheima,视频里面的api没有加上,导致我这个里面走不了微服务网关,配置文件里面可以自动加,如果往配了,直接在请求地址前面加个/api就可以了,feign调用那里没有什么说的,就是把findById这个方法复制过过去就可以了,然后获取从数据库里面的用户名密码。
接下来就是创建购物车微服务
加入购物车得SSM得编写比较简单,直接就是一套ADD然后远程调用Feign来实现查询某个商品,在将某个商品进行封装,存入到Redis中
Controller
Service:
完成测试:
查询购物车列表也是比较简单得注意要是
return redisTemplate.boundHashOps("cart_"+username).values();
Controller:直接调用Service就可以其他没有什么额外得判断条件:
完成测试:
在获取授权微服务认证的过程中,只需要用之前额JWT的网关生成相关的命令就可以了
还是比较简单的,最主要的市要编写一个拦截器,拦截器编写好了,之后的授权操作就很容易实现了,令牌的生成就通过之前的测试JWT令牌就可以实现
就是载荷里面价格字符串数组即可,接下来就是在拦截器里面加入两句,就可以实现微服务之间的认证
关于微服务之间的拦截认证,只需要把之前的拦截器复制一些,进行少许修改就可以了
相对过程还是比较简单的
还是将token封装到所有的请求头信息中进行传递下去就可以实现各微服务之间的认证,这个主要是在购物车这个微服务中调用了SkuFeing,所以对goods微服务进行了拦截出来
先登录
可以看到这个时候必须要携带token,才能进行添加购物车的操作
加入tokern之后购物车微服务认证成功
订单微服务对接微服务网关,只需要在微服务网关中加入拦截路径即可,同时还要配上路由地址,即可完成网关的对接
测试:http://localhost:8001/api/cart/add?id=1148477873288388608&num=3 为请求地址
一定要加上api前缀,这个是网关的前缀,并且端口号要进行修改
动态获取用户姓名,在Utis里面加入TokenDeconde工具类,因为Token是在各个微服务之间已经携带并且认证过的,里面还有用户的信息
之后在Order微服务里面加入公钥文件和Config的拦截文件,即可实现动态获取用户信息
http:// http://localhost:8001/api/cart/list,只要用户登录通过之后就可以读取token里面的用户信息,并且把token存到请求头中传递到订单微服务中,订单微服务在从token中读取用户信息作为参数进行处理。
这个章的内容还是主要还是微服务之间的认证授权处理起来比较麻烦。