当前位置:   article > 正文

tp6 JWT生成token_thinkphp6 auth token

thinkphp6 auth token

1.安装

composer require firebase/php-jwt

安装完成后会在vendor目录下生成firebase目录,里面就是jwt的插件包

2.引用封装

在common.php公共文件中封装即可使用

引入JWT类

use   Firebase\JWT\JWT;
  1. <?php
  2. // 应用公共文件
  3. use Firebase\JWT\JWT;
  4. /**
  5. * 生成token
  6. * @param string $userId
  7. * @return string
  8. */
  9. function createJwt($userId = 'zhangsan')
  10. {
  11. $key = md5('zhangsan.com7725@!'); //jwt的签发密钥,验证token的时候需要用到
  12. $token = array(
  13. "user_id" => $userId,
  14. "iss" => "http://www.gouzuopei.com/",//签发组织
  15. "aud" => "孤单的时候狗作陪!", //签发作者
  16. "iat" => time(),//签发时间
  17. "nbf" => time(),//生效时间
  18. "exp" => time()+14400,//过期时间,3600为一小时
  19. );
  20. $jwt = JWT::encode($token, $key,'HS256');//加密,hs256算法
  21. return $jwt;
  22. }
  23. function verifyJwt($jwt = '')
  24. {
  25. $key = md5('zhangsan.com7725@!');//jwt的签发密钥,
  26. try {
  27. $jwtAuth = json_encode(JWT::decode($jwt, new \Firebase\JWT\Key($key,'HS256')));
  28. $authInfo = json_decode($jwtAuth, true);
  29. $msg = [];
  30. if (!empty($authInfo['user_id'])) {
  31. $msg = [
  32. 'status' => 1001,
  33. 'msg' => 'Token验证通过',
  34. 'data'=>$authInfo['user_id']
  35. ];
  36. return $msg;
  37. } else {
  38. $msg = ['status' => 1002, 'msg' => 'Token验证不通过,用户不存在'];
  39. }
  40. return $msg;
  41. } catch (\Firebase\JWT\ExpiredException $e) {
  42. echo json_encode([
  43. 'status' => 1003,
  44. 'msg' => 'Token过期'
  45. ]);
  46. exit;
  47. } catch (\Exception $e) {
  48. echo json_encode([
  49. 'status' => 1005,
  50. 'msg' => 'Token无效'
  51. ]);
  52. exit;
  53. }
  54. }

3.使用

  1. //生成token
  2. $token = createJwt('112233');
  3. //验证token
  4. $id = verifyJwt($token);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/499976
推荐阅读
相关标签
  

闽ICP备14008679号