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对象。
浙公网安备 33010602011771号