redis实现单点登录

对于电商系统,用户可以以游客的形式访问商品,但是要访问购物车和订单就需要登录。对于大型电商网站来说,购物车和订

单可能是两个系统。那么如何实现只需登录一次,就可以访问这两个系统呢?这里记录下用redis实现的单点登录。

1. 首先一切都要先从登陆开始。

  用户输入用户名,密码,然后发起登陆请求。前台系统接到请求后,将参数封装,利用httpClient再次发送请求到SSO系统,

  SSO系统先用用户名查找是否有该用户,在对刚才输入的密码进行加密对比。如果密码一致,则利用字符串"ticket"+系统当前

  时间+user_Id+username哈希计算后等到ticket,做为key; 利用jakson技术将User转化为json字符串,作为value, 然后再

  存放到redis,最后返回ticket。前台系统得到ticket,设置成cookie返回给客户端。

2. 访问购物车和订单系统

  当访问购物车和订单系统的时候,由于用户发送请求给前台系统,然后再由前台系统去访问购物车和订单系统,所以不考虑跨域

  问题。在前台系统配置两个springMVC自带的拦截器,分别拦截用户发送过来访问购物车和订单的请求。在拦截器中,通过客户

  端传回来的ticket,去访问redis, 如果查询不到数据,证明用户没有登陆,如果是对订单的访问会直接跳转到登陆页面;如果是购物

  车,购物车的商品信息会被放在cookie里,放行后,从cookie里取出商品信息,显示在购物车列表里。如果查到数据则会在json串

  转换为User,放在线程的threadLocals里,以便后面得到User对象。

posted @ 2017-10-25 23:05  bruce.chen  阅读(1929)  评论(0)    收藏  举报