ThinkPHP5 使用 JWT 进行加密

ThinkPHP5 使用 JWT 进行加密

使用 githubfirebasejwt

– 使用 composer 安装此扩展

– 代码示例

<?php /**  * [InterCommon-接口公用]  * @Author   RainCyan  * @DateTime 2019-08-12T16:38:08+0800  */ namespace apphladmincontroller; use thinkController; use FirebaseJWTJWT; class InterCommonController extends Controller {     private $key = "123456789";     //客户端获取TOKEN     public function _getJwtToken(){         try {             $string = input("string");             if (empty($string)) {                 throw new Exception("请传入需要加密string", -105);             }             $jwt = $this->_setJwtToken($string);             throw new Exception($jwt, 200);         } catch (Exception $e) {             return json(array("code"=&gt;$e-&gt;getCode(), "msg"=&gt;$e-&gt;getMessage()));         }     }     //签发token     private function _setJwtToken($string=""){         $key = $this-&gt;key;         $time = time();         $token = array(             "iss" =&gt; "http://ml.cn",             "aud" =&gt; "http://ml.cn",             'iat' =&gt; $time, //签发时间             'nbf' =&gt; $time + 10, //在什么时间之后该jwt才可用             'exp' =&gt; $time + 10, //过期时间             "string" =&gt; $string         );         $jwt = JWT::encode($token, $key);         return $jwt;     }     //解析token     protected function _readJwtToken($jwt){         $key = $this-&gt;key;         try {             JWT::$leeway = 60;//当前时间减去60,把时间留点余地             $decoded = JWT::decode($jwt, $key, ['HS256']); //HS256方式,这里要和签发的时候对应             $arr = (array)$decoded;             return json_msg(200, "success", $arr);         } catch(FirebaseJWTSignatureInvalidException $e) {  //签名不正确             return json_msg(-101, $e-&gt;getMessage());         }catch(FirebaseJWTBeforeValidException $e) {  // 签名在某个时间点之后才能用             return json_msg(-102, $e-&gt;getMessage());         }catch(FirebaseJWTExpiredException $e) {  // token过期             return json_msg(-103, $e-&gt;getMessage());         }catch(Exception $e) {  //其他错误             return json_msg(-104, $e-&gt;getMessage());         }     }     //测试解析     public function _writeJwtToken($token){         halt($this-&gt;_readJwtToken($token));     } } ?&gt;

本文来自thinkphp框架技术文章栏目:firebasejwt

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享