Jwttoken.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 (\UnexpectedValueException $e) {
  41. return [
  42. 'status' => 10002,
  43. 'msg' => $e->getMessage()
  44. ];
  45. exit;
  46. } catch (\InvalidArgumentException $e) {
  47. return [
  48. 'status' => 10002,
  49. 'msg' => $e->getMessage()
  50. ];
  51. exit;
  52. } catch (\Firebase\JWT\ExpiredException $e) {
  53. //Token过期
  54. return [
  55. 'status' => 10003,
  56. 'msg' => '登录信息已超时,请重新登录'
  57. ];
  58. exit;
  59. } catch (Exception $e) {
  60. return [
  61. 'status' => 10004,
  62. 'msg' => '未知错误'
  63. ];
  64. exit;
  65. }
  66. }
  67. }