单点登录

单点登录主要在我们项目sso系统中,用户只需要登录一次就可以访问相互信任的模块。这样就避免了用户登录各个模块还需要重复登录的问题。像传统的登录都是把用户的信息存储到session里面,访问其他模块时又从session里面去取,看用户是否登录。但是这适用于一个tomcat的情况。对于采用分布式架构的话就存在session共享问题。对于这种session共享问题我们前期有两种方案第一种方案是采用ip_hash这种方式,用户登陆后都把数据存到同一个tomcat的session里面,登录时再从这个tomcat里面去取,表面看起来挺合适但是如果这台tomcat挂了session里面的数据就没有了,显然是不利于扩展。我们就需要采用第二种方案session基于redis缓存,客户一登录就把数据放到session中,然后再把session里面的数据放到redis缓存中,每次访问其他模块时从redis里面去取然后再把数据放到session里面这样就可以实现session共享问题了,也可以处理高并发问题。但是经过我们项目组讨论又出来一个方案既然redis可以解决session共享问题咱们怎么不直接使用redis作为缓存呢?这样就不用考虑session共享问题了呀。所以我们最终决定把数据放到redis缓存中会更好些。但是这只是把用户的数据放到redis缓存中了,那redis的key怎么获取呀,获取key最初我们采用的是cookie但是担心有些人会禁用cookie那我们就不能从cookie中获取相应的key了,我们采用了LocalStorage来存储会比较好些,因为他是基于Html5的一个存储框架.

具体实现细节:当客户一登录时把用户姓名用md5进行加密生成一个token作为redis的key,用户的基本信息作为value存储在redis里面,然后再把这个token存储到localStorage里作为他的value,当然localStorage的key是我们店铺的名字+”_token”。当登录前台系统时,拦截器会进行拦截,先从localStorage里面取数据如果取不到数据就返回登录页面,如果登取到数据了也就是token,我们会根据token作为redis里面的key取用户的数据,如果取不到我们就会返回到登录页面,如果取到就到前台页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值