Jwttoken.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace app\common\model;
  3. use Firebase\JWT\JWT;
  4. use Firebase\JWT\Key;
  5. class Jwttoken
  6. {
  7. //生成token
  8. public function createJwt($username)
  9. {
  10. $key = md5('key'); //jwt的签发密钥,验证token的时候需要用到
  11. $time = time();
  12. $expire = $time + 14400; //过期时间
  13. $token = array(
  14. "username" => $username,
  15. "iss" => "",//签发组织
  16. "aud" => "", //签发作者
  17. "iat" => $time, //签发时间
  18. "nbf" => $time, //生效时间
  19. "exp" => $expire
  20. );
  21. $jwt = JWT::encode($token, $key, 'HS256');
  22. return $jwt;
  23. }
  24. //校验jwt权限API
  25. public function verifyJwt($jwt)
  26. {
  27. $key = 'A6H1O#vJ*6QV3*sC';
  28. try {
  29. $jwtAuth = JWT::decode($jwt, new Key($key, 'HS256'));
  30. $authInfo = (array)$jwtAuth;
  31. $msg['status']=0;
  32. $msg['info']=$authInfo;
  33. return $msg;
  34. } catch (\Firebase\JWT\SignatureInvalidException $e) {
  35. return [
  36. 'status' => 10002,
  37. 'msg' => 'Token无效'
  38. ];
  39. exit;
  40. } catch (\Firebase\JWT\ExpiredException $e) {
  41. //Token过期
  42. return [
  43. 'status' => 10003,
  44. 'msg' => '登录信息已超时,请重新登录'
  45. ];
  46. exit;
  47. } catch (Exception $e) {
  48. return [
  49. 'status' => 10004,
  50. 'msg' => '未知错误'
  51. ];
  52. exit;
  53. }
  54. }
  55. }