登录后,实现cookie信息和数据库信息的合并
2016-09-20 18:50
190 查看
购物车流程图:
逻辑:当用户登录之后,判断cookie中是否有购物车信息,如果有,和用户数据库中的购物车商品完成合并,如果cookie中没有购物车信息直接完成登录。
用户发起请求登录,前端控制器UserController调用SSO(单点登录)的一个接口,进行登录验证,成功后返回ticket,不成功返回error状态;登录成功还需发一条消息到(RabbitMQ的交换机),拿到这条消息的应用程序(RabbitMQ)绑定了消息队列,监听消息的应用程序得到这个消息后,做自己的业务逻辑,完成redis和数据库中购物车商品的合并。
发送的消息内容应当包含:1.用户——>> userId
2.redis中购物车信息——>> cookie中key——>>TT_CART
要想得到未登录前cookie中的商品信息,需要把用户登录时的cookie信息传递给controller,controller调用service,service,调用SSO登录验证,并把
更改UserService中的dologin()方法和UserController的dologin()方法,如下
UserController.dologin()接受cookie
这样就把cookie中key传递到了业务逻辑中。
第二步,在
并配置MQ:
这样,消息就发送出来了。
第三步,在taotao-cart中监听队列消息并且完成数据的合并
首先来配置rabbitMQ队列的监听:
监听的类:
监听的队列:
处理逻辑:
完成队列和交换机的绑定
逻辑:当用户登录之后,判断cookie中是否有购物车信息,如果有,和用户数据库中的购物车商品完成合并,如果cookie中没有购物车信息直接完成登录。
用户发起请求登录,前端控制器UserController调用SSO(单点登录)的一个接口,进行登录验证,成功后返回ticket,不成功返回error状态;登录成功还需发一条消息到(RabbitMQ的交换机),拿到这条消息的应用程序(RabbitMQ)绑定了消息队列,监听消息的应用程序得到这个消息后,做自己的业务逻辑,完成redis和数据库中购物车商品的合并。
发送的消息内容应当包含:1.用户——>> userId
2.redis中购物车信息——>> cookie中key——>>TT_CART
要想得到未登录前cookie中的商品信息,需要把用户登录时的cookie信息传递给controller,controller调用service,service,调用SSO登录验证,并把
cookie中的key连同
userId传递给RabbitMq的消息队列 :
this.rabbitTemplate.converAndSend(msg)。
更改UserService中的dologin()方法和UserController的dologin()方法,如下
UserController.dologin()接受cookie
这样就把cookie中key传递到了业务逻辑中。
第二步,在
SSO中接收
params.put("data",cartKey)的
data参数,并实现发送消息到
RabbitMQ的消息交换机
并配置MQ:
这样,消息就发送出来了。
第三步,在taotao-cart中监听队列消息并且完成数据的合并
首先来配置rabbitMQ队列的监听:
监听的类:
loginCarHandler
监听的队列:
taotao-car-login
处理逻辑:
完成队列和交换机的绑定
相关文章推荐
- 对Oracle数据库坏块的理解
- Mysql区分大小写问题
- ibatis小结
- sqlite中的锁及概念误区
- mongodb安装与使用
- 在win7系统中安装SQL2005出现29506错误码的解决方案
- MySQL常用的数据类型及函数_20160920
- 如何在一台windows主机上搭建mysql主从配置
- 将本地数据库里的表上传至服务器
- sql输入单引号总显示错误 为什么
- 实用SQL语句大全
- MongoDB 的shell脚本基础进阶
- Oracle RAC 11g 通过SCAN连接遇到ORA-12170错误的解决办法
- pycharm快捷键、常用设置、配置管理
- mysql ab 压力测试的解读(转)
- Oracle
- mysql查询优化需要注意的20点
- spring mvc redis消息队列
- mysql的优化
- Linux环境下安装mongodb