where('expire','>', time())->value('user_id'); } public static function getUserToken($token):bool { return boolval(UserToken::where('token',$token)->where('expire','>', time())->order('id','asc')->count()); } public static function login(string $token,User $user) { $keepalive_time=Config::get('app.user_login.keepalive_time'); $token = md5($token); UserToken::create([ 'token'=> $token , 'user_id'=>$user->id, 'expire'=>time()+$keepalive_time ]); $allow_device_num=Config::get('app.user_login.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(); } return $token ; } public function logout() { UserToken::where('token',$this->usertoken->token)->delete(); } }