123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
- declare(strict_types=1);
- namespace app\utils;
- use \Firebase\JWT\JWT;
- * PHP实现jwt
- */
- class JWTUtils extends JWT
- {
-
- 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);
- }
- }
- }
|