fastadmin保持用户登陆状态

fastadmin登陆成功后的处理:

        //事件监听
        Hook::add('user_login_successed', function ($user) use ($auth) {
            $expire = input('post.keeplogin') ? 630 * 86400 : 0;
            Cookie::set('uid', $user->id, $expire);
            $token=$auth->getToken();
            Cookie::set('token', $token, $expire);
        });

会将uid和token保存在cookie中 

与此同时,对应的token和user_id根据config配置保存

config:

登陆状态保持:

当调用需要登陆才能访问的方法时会调用Auth.php中的init方法,判断用户是否登陆

   /**
     * 根据Token初始化
     *
     * @param string $token Token
     * @return boolean
     */
    public function init($token)
    {
        if ($this->_logined) {
            return true;
        }
        if ($this->_error) {
            return false;
        }
        $data = Token::get($token);
        if (!$data) {
            return false;
        }
        $user_id = intval($data['user_id']);
        if ($user_id > 0) {
            $user = User::get($user_id);
            if (!$user) {
                $this->setError('Account not exist');
                return false;
            }

            if ($user['status'] != 1) {
                $this->setError('Account is locked');
                return false;
            }
            $this->_user = $user;
            $this->_logined = true;
            $this->_token = $token;

            //初始化成功的事件
            Hook::listen("user_init_successed", $this->_user);

            return true;
        } else {
            $this->setError('You are not logged in');
            return false;
        }
    }

请求的cookie中会携带sessionId、token等信息,传入token执行$data = Token::get($token);

传入的token通过连接数据库取得对应的handler

handler存有对应user_id、token、过期时间等数据

然后通过获取到的user_id判断user模型里是否有相应记录,有则登陆成功,反之则需要登陆。

cookie保存的是uid和token,PHPSESSID。登陆主要用到的是cookie中的token,token如果伪造是无法进行登陆的。PHPSESSID主要用在表单提交token验证。

因为cookie保存了uid和token如果用户禁用了cookie,那么就会无法请求需要登陆状态的方法,甚至无法登陆,也无法提交表单。

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值