使用

安装

  1. composer require easyswoole/jwt

依赖

::: warning

  • PHP version >= PHP 7.1
  • easyswoole 组件包括 spl 与 utility :::

生成token

  1. use EasySwoole\Jwt\Jwt;
  2. $jwtObject = Jwt::getInstance()
  3. ->setSecretKey('easyswoole') // 秘钥
  4. ->publish();
  5. $jwtObject->setAlg('HMACSHA256'); // 加密方式
  6. $jwtObject->setAud('user'); // 用户
  7. $jwtObject->setExp(time()+3600); // 过期时间
  8. $jwtObject->setIat(time()); // 发布时间
  9. $jwtObject->setIss('easyswoole'); // 发行人
  10. $jwtObject->setJti(md5(time())); // jwt id 用于标识该jwt
  11. $jwtObject->setNbf(time()+60*5); // 在此之前不可用
  12. $jwtObject->setSub('主题'); // 主题
  13. // 自定义数据
  14. $jwtObject->setData([
  15. 'other_info'
  16. ]);
  17. // 最终生成的token
  18. $token = $jwtObject->__toString();

解析token

  1. use EasySwoole\Jwt\Jwt;
  2. $token = "eyJhbGciOiJITUFDU0hBMjU2IiwiaXNzIjoiZWFzeXN3b29sZSIsImV4cCI6MTU3MzgzNTIxMSwic3ViIjoi5Li76aKYIiwibmJmIjoxNTczODMxOTExLCJhdWQiOiJ1c2VyIiwiaWF0IjoxNTczODMxNjExLCJqdGkiOiJjYWJhZmNiMWIxZTkxNTU3YzIxMDUxYTZiYTQ0MTliMiIsInNpZ25hdHVyZSI6IjZlNTI1ZjJkOTFjZGYzMjBmODE1NmEwMzE1MDhiNmU0ZDQ0YzhkNGFhYzZjNmU1YzMzMTNjMDIyMGJjYjJhZjQiLCJzdGF0dXMiOjEsImRhdGEiOlsib3RoZXJfaW5mbyJdfQ%3D%3D";
  3. try {
  4. $jwtObject = Jwt::getInstance()->decode($token);
  5. $status = $jwtObject->getStatus();
  6. // 如果encode设置了秘钥,decode 的时候要指定
  7. // $status = $jwt->setSecretKey('easyswoole')->decode($token)
  8. switch ($status)
  9. {
  10. case 1:
  11. echo '验证通过';
  12. $jwtObject->getAlg();
  13. $jwtObject->getAud();
  14. $jwtObject->getData();
  15. $jwtObject->getExp();
  16. $jwtObject->getIat();
  17. $jwtObject->getIss();
  18. $jwtObject->getNbf();
  19. $jwtObject->getJti();
  20. $jwtObject->getSub();
  21. $jwtObject->getSignature();
  22. $jwtObject->getProperty('alg');
  23. break;
  24. case -1:
  25. echo '无效';
  26. break;
  27. case -2:
  28. echo 'token过期';
  29. break;
  30. }
  31. } catch (\EasySwoole\Jwt\Exception $e) {
  32. }