| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | 
							- <?php
 
- namespace App\Service;
 
- use Firebase\JWT\JWT;
 
- use Firebase\JWT\Key;
 
- class TokenService
 
- {
 
-     const key = "jf2.0"; //签发人  可空
 
-     const validity = 8640000; //有效期
 
-     const error = [
 
-         -1 => "签名不正确",
 
-         -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() + TokenService::validity,
 
-             "data"=> [
 
-                 'user_id' => $userId
 
-             ]
 
-         );
 
-         return JWT::encode($token,TokenService::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(TokenService::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;
 
-         }
 
-     }
 
- }
 
 
  |