"签名不正确", -2 => "签名在某个时间点之后才能用", -3 => "签名过期,重新登录", -4 => "未知错误" ]; /** * Created by PhpStorm. * User: Administrator * Date: 2023/3/13 * Time: 16:43 * 获取token(登录以后) */ public static function getToken($userId) :string{ $token = array( "iat"=> time(), //签发时间 "nbf"=> time() - 1, //生效时间 (立即生效) "exp"=> time() + self::validity, "data"=> [ 'user_id' => $userId ] ); return JWT::encode($token,self::key,"HS256"); } /** * Created by PhpStorm. * User: Administrator * Date: 2023/3/13 * Time: 16:52 * 解密token */ public static function verifyToken($token){ try { JWT::$leeway = 60;//当前时间减去60,把时间留点余地,同步其他服务器时间,解决nbf字段验证不通过问题 $decoded = JWT::decode($token,new Key(self::key, "HS256")); //HS256方式,这里要和签发的时候对应 $arr = (array)$decoded; return $arr['data']->user_id; } catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确 return -1; } catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用 return -2; } catch (\Firebase\JWT\ExpiredException $e) { // token过期 return -3; } catch (\Exception $e) { //其他错误 return -4; } } }