用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1729|回复: 2
收起左侧

[版本 2.x] CI怎么实现单一登录?

[复制链接]
发表于 2017-2-27 11:57:31 | 显示全部楼层 |阅读模式
RT
首先解释一下单一登录,就是让一个用户同时只能在一个地点登录,换浏览器,换电脑都会导致上次处在活动状态的登录状态失效

我本以为是单点登录,百度了下,发现不是我想的那样;扯远了,回到整体

项目是一个旧项目,采用了CI  2.1.0的版本

session的存储采用了redis

这就是我目前所了解到的,看了两天的代码,搜索了google,百度找不到合适的方案

用户登录时,设置了cookie,cookies里有sesionid  然后,在其他电脑登录的时候,去redis里查找对应的session是否过期,没有过期说明上一次登录仍在活动状态

但怎么让上次登录的session失效呢?或者说怎么让特定的session失效?CI的文档里都是对当前会话失效

想了半天还是一头雾水

求各位前辈指教
发表于 2017-2-27 14:34:38 | 显示全部楼层
你这个需求就是让以前登录的 Session 过期,最简单的方式就是删除那个 session id 下的数据。。。。

PS: 原则上 Session 只能操作当前用户的,由于 CI 的 Session 是 PHP 原生 Session,所以不会提供操作别人 Session 的 API,不过,实际上你是可以操作 Session 数据的。
发表于 2017-3-5 03:55:20 | 显示全部楼层
比较简单的是保存数据的方式来验证,比如有一个会员目前在ip:123455 的windows 10操作系统的火狐浏览器里登陆了,
保存其ip,操作系统和浏览器数据,然后在做判断,一旦发现当前的登陆环境和其数据库不一致,就需要重新登录

本版积分规则