TP5 - 唯一登录在重新请求时踢用户下线

在登录的时候把session_id保存到redis一个数组中
login.php

                //登录后获取用户id,如id=1
                $uid = 1;
                //创建一个唯一id数组作为唯一登录检测,如果没有此redis值就创建一个数组
                if(!cache('sessionIds')){
                    //创建一个数组,将id作为key把session_id作为值存到redis
                    $sessionIds = [];
                    $sessionIds[$uid] = session_id();
                    cache('sessionIds',$sessionIds);
                }else{
                    //找到登录id 对应的session_id值并改变这个值
                    $sessionIds = cache('sessionIds');
                    $sessionIds[$uid] = session_id();
                    cache('sessionIds',$sessionIds);
                }

在构造函数中写入检查方法
Index.php

//构造函数中
public function _initialize(){
      //用户处于登录状态时
      if(session('userinfo')){
            //登录状态检测用户是否在其他地方登录
            if(!$this->onlyLoginCheck()){
                session('userinfo',NULL);
                exit('您的账号已在其他设备登录');
            }
        }
}
//检查唯一登录
protected function onlyLoginCheck(){
        $sessionIds = cache('sessionIds');
        $id = session('userinfo.us_id');
        //存入的session_id和登录的session_id相等则返回true
        if($sessionIds[$id] == session_id()){
            return true;
        }else{
            return false;
        }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容