1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- namespace App\Service;
- use Firebase\JWT\JWT;
- use Firebase\JWT\Key;
- class TokenService
- {
- const key = "t_nine"; //签发人 可空
- 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() + 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;
- }
- }
- }
|