Blogger Information
Blog 87
fans 1
comment 0
visits 58339
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Token验证
阿杰
Original
411 people have browsed it

1、引入JWT

  1. composer require firebase/php-jwt

2、生成token

  • 在公共文件common.php中引入jwt
  1. // 应用公共文件
  2. use Firebase\JWT\JWT;
  3. use Firebase\JWT\Key;
  4. use Firebase\JWT\SignatureInvalidException;
  5. use Firebase\JWT\ExpiredException;
  6. use Firebase\JWT\BeforeValidException;
  • 生成验签
  1. /**
  2. * 生成token
  3. * $uid 输入用户openid&&id
  4. */
  5. if(!function_exists('signToken')){
  6. // 生成验签
  7. function signToken($uid)
  8. {
  9. $key = '!@#$%*&'; //这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当 于加密中常用的 盐 salt
  10. $token = array(
  11. "iss" => '', //签发者 可以为空
  12. "aud" => '', //面象的用户,可以为空
  13. "iat" => time(), //签发时间
  14. "nbf" => time() + 60, //在什么时候jwt开始生效 (这里表示生成60秒后才生效)
  15. "exp" => time() + 120, //token 过期时间 (这里表示过期时间为120秒)
  16. 'data' => $uid //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对
  17. );
  18. $jwt = JWT::encode($token, $key, "HS256"); //根据参数生成了 token
  19. return $jwt;
  20. }
  21. }

3、验证token

  • 重点:前后端约好的关键字
  1. /**
  2. * 验证token
  3. * $token 生成的token值
  4. */
  5. if(!function_exists('checkToken')){
  6. // 验证token
  7. function checkToken($token)
  8. {
  9. $key = '!@#$%*&';
  10. $status = array("code"=>2);
  11. try {
  12. // JWT::$leeway = 60; //当前时间减去60,把时间留点余地
  13. JWT::$leeway = 0;
  14. $decode = JWT::decode($token,new Key($key,'HS256')); //HS256方式,这里要和签发的时候对应
  15. $arr = (array)$decode;
  16. $res['code'] = 1;
  17. $res['data'] = $arr['data'];
  18. return $res;
  19. } catch (SignatureInvalidException $e) { //签名不正确
  20. $status['msg'] = "签名不正确";
  21. return $status;
  22. } catch (BeforeValidException $e) { // 签名在某个时间点之后才能用
  23. $status['msg'] = "token未生效";
  24. return $status;
  25. } catch (ExpiredException $e) { // token过期
  26. $status['msg'] = "token失效";
  27. return $status;
  28. } catch (Exception $e) { //其他错误
  29. $status['msg'] = "未知错误";
  30. return $status;
  31. }
  32. }
  33. }
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post