美文网首页
TP5 - 唯一登录在重新请求时踢用户下线

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

作者: NO我的错 | 来源:发表于2019-03-18 13:03 被阅读0次

    在登录的时候把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;
            }
    }
    

    相关文章

      网友评论

          本文标题:TP5 - 唯一登录在重新请求时踢用户下线

          本文链接:https://www.haomeiwen.com/subject/nrdvmqtx.html