'webman', // 签发者 'aud' => 'client', // 接收方 'iat' => time(), // 签发时间 'exp' => time() + $config['expire'], // 过期时间 'sub' => $userId // 用户标识 ]; return JWT::encode($payload, $config['secret'], $config['algorithm']); } /** * 验证并解析 Token * @param string $token * @return object * @throws BusinessException */ public static function verifyToken(string $token) { $config = config('jwt'); $body = [ 'status' => 'error', 'code' => 403, 'message' => 'Please log in.', 'data' => [], ]; try { return JWT::decode($token, new Key($config['secret'], $config['algorithm'])); } catch (ExpiredException $e) { $body['message'] = 'Token Expired'; return response(json_encode($body, JSON_UNESCAPED_UNICODE), 401, ['Content-Type' => 'application/json']); } catch (SignatureInvalidException $e) { $body['message'] = 'Signature Invalid'; return response(json_encode($body, JSON_UNESCAPED_UNICODE), 401, ['Content-Type' => 'application/json']); } catch (\Exception $e) { $body['message'] = 'Invalid Token'; return response(json_encode($body, JSON_UNESCAPED_UNICODE), 401, ['Content-Type' => 'application/json']); } } }