time()) { return true; } // 不存在或超过一定时间则重新生成 $tokenData["user_id"] = $userID; $tokenData["token"] = Random::uuid(); // 使用随机字符串 $tokenData["create_time"] = time(); return self::init()->set($userID, json_encode($tokenData, JSON_UNESCAPED_UNICODE)); } /** * 解码已加密的Token信息 * @param string $token * @return array */ public static function unmarshal(string $token): array { $decode = json_decode(base64_decode($token), true); $tokenArr = []; if (!empty($decode) && !empty($decode["user_id"]) && is_int($decode["user_id"]) && !empty($decode["token"]) && is_string($decode["token"])) { $tokenArr["user_id"] = $decode["user_id"]; $tokenArr["token"] = $decode["token"]; } return $tokenArr; } /** * 判断Token是否可用 * @param int $userID 会员ID * @param string $token Token标识 * @return bool */ public static function check(int $userID, string $token): bool { return self::init()->check($userID, $token); } /** * 读取Token * @access public * @param int $userID 用户ID * @return array */ public static function get(int $userID): array { return self::init()->get($userID); } /** * 获取加密后的Token * @access public * @param int $userID 用户ID * @return array */ public static function getEncryptedToken(int $userID): string { return self::init()->getEncryptedToken($userID); } /** * 删除Token * @param int $userID 用户ID * @return bool */ public static function delete(int $userID): bool { return self::init()->delete($userID); } }