| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- <?php
- namespace App\Vendor;
- /**
- * PHP实现jwt
- */
- class Jwt {
- /**
- * 验证token是否有效,默认验证exp,nbf,iat时间
- * @param string $Token 需要验证的token
- * @return bool|string
- */
- public static function verifyToken(string $Token)
- {
- $tokens = explode('.', $Token);
- if (count($tokens) != 3)
- return false;
- list($base64header, $base64payload, $sign) = $tokens;
- //获取jwt算法
- $base64decodeheader = json_decode(self::base64UrlDecode($base64header), JSON_OBJECT_AS_ARRAY);
- if (empty($base64decodeheader['alg']))
- return false;
- //签名验证
- if (self::signature($base64header . '.' . $base64payload, self::$key, $base64decodeheader['alg']) !== $sign)
- return false;
- $payload = json_decode(self::base64UrlDecode($base64payload), JSON_OBJECT_AS_ARRAY);
- //签发时间大于当前服务器时间验证失败
- if (isset($payload['iat']) && $payload['iat'] > time())
- return false;
- //过期时间小宇当前服务器时间验证失败
- if (isset($payload['exp']) && $payload['exp'] < time())
- return false;
- //该nbf时间之前不接收处理该Token
- /*if (isset($payload['nbf']) && $payload['nbf'] > time())
- return false;*/
- return $payload;
- }
- }
|