首页 > 其他 > 详细

单用户登陆demo-后者挤到前者,类似QQ

时间:2019-05-14 12:28:48      阅读:145      评论:0      收藏:0      [点我收藏+]

单用户登陆demo ,采用的是Tp5。

流程是,当用户首次登陆是验证用户帐号密码,成功的,用当前时间戳加上用户id和ip 拼接成一个标识,暂且sign ,然后存入cookie ,时间戳存入缓存redis  ,session 携带用户信息

    //单点登陆demo
    public function olineOneLogin()
    {   
        $params = Request::only(‘username,password‘);
        $validate = Validate::make([
            ‘username‘ => ‘require‘,
            ‘password‘ => ‘require‘,
        ]);
        if (!$validate->check($params)) {
            Error($validate->getError());
        }

        $userdata = Db::connect(‘login‘)->table(‘user‘)->where(‘username‘,$params[‘username‘])->where(‘pass‘,md5($params[‘password‘]))->find();
        if( $userdata ){
            $time = time();
            $singleToken = md5(Request::ip().$userdata[‘uid‘]. $time);
            Cache::set($userdata[‘uid‘],$time);
            Session::set(‘login‘,$userdata);
            Cookie::set(‘SINGLETOKEN‘,$singleToken);
            echo ‘Landing successfully‘;
        }else{
            Error(‘帐号或密码错误!‘);
        }
    }

  

验证方法 就是用cookie里的sign 和redis的值对比下

    //验证方法
    function handle()
    {
       $userinfo  = Session::get(‘login‘);
       if($userinfo){
            $singletoken  = Cookie::get(‘SINGLETOKEN‘);
            if($singletoken){
                $time = Cache::get($userinfo[‘uid‘]);
                $ip = Request::ip();
                $secret = md5($ip.$userinfo[‘uid‘].$time);

                if ($singletoken != $secret) {
                    Session::delete(‘login‘);
                    exit(‘您的帐号在另一个地点登录‘); 
                }
                //通过验证
                return ;
            }else{
               exit(‘请先登陆1‘); 
            }
            
       }else{
            exit(‘请先登陆2‘);
       }
    }

  

然后调用

    public function user()
    {   
        //验证,可以写中间件或者父类 ,我这是demo
        $this->handle();
        echo ‘hello world‘;
    }

  

单用户登陆demo-后者挤到前者,类似QQ

原文:https://www.cnblogs.com/liubaoqing/p/10861175.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!