markdown格式wiki文档

JWTUtils.php 1.6KB

    <?php declare(strict_types=1); namespace app\utils; use \Firebase\JWT\JWT; /** * PHP实现jwt */ class JWTUtils extends JWT { //使用HMAC生成信息摘要时所使用的密钥 private static $key = 'bf731bcb3f5e52ec1b8b12c95f503d7a'; /** * 获取jwt token * @param array $payload jwt载荷 格式如下非必须 * [ * 'iss'=>'jwt_admin', //该JWT的签发者 * 'iat'=>time(), //签发时间 * 'exp'=>time()+7200, //过期时间 * 'nbf'=>time()+60, //该时间之前不接收处理该Token * 'sub'=>'www.admin.com', //面向的用户 * 'jti'=>md5(uniqid('JWT').time()) //该Token唯一标识 * ] * @return bool|string */ public static function getToken(array $payload) { if (is_array($payload)) { $token = self::encode($payload, self::$key); return $token; } else { return false; } } /** * 验证token是否有效,默认验证exp,nbf,iat时间 * @param string $Token 需要验证的token * @return bool|string */ public static function verifyToken(string $Token) { try { self::$leeway = 60; $decoded = self::decode($Token, self::$key, ['HS256']); $arr = (array)$decoded; if ($arr['exp'] < time()) { throw new RRException("认证信息已过期, 请重新登录.", 401); } return true; } catch(\Exception $e) { throw new RRException($e->getMessage(), 401); } } }