usertoken)){ return $this->usertoken->user->toArray(); } return false; } public function getUserToken():UserToken|false { if(isset($this->usertoken)){ return $this->usertoken; } return false; } public function login(string $token,User $user) { $keepalive_time=Config::get('app.auth.keepalive_time'); $token = md5($token); $this->usertoken=UserToken::create([ 'token' => $token, 'user_id'=> $user->id, 'expire' => time()+$keepalive_time ]); $this->usertoken->token=$token; $this->usertoken->user=$user; $allow_device_num=Config::get('app.auth.allow_device_num'); //如果数据库中保存的设备数大于允许的设备数,如果超出则挤出去最早登陆的设备 $time=time(); $count=UserToken::where('user_id',$user->id)->where('expire','>',$time)->count(); if($count>$allow_device_num){ $usertoken=UserToken::where('user_id',$user->id)->where('expire','>',$time)->order('id','asc')->find(); $usertoken->delete(); } Cookie::set('token', $token ,$keepalive_time); return $token; } public function logout() { UserToken::where('token',$this->usertoken->token)->delete(); Cookie::delete('token'); } }