ThinkPHP5 使用 JWT 进行加密

互联网 19-8-19

使用 Github 的 firebase\JWT

- 使用 Composer 安装此扩展

- 代码示例

<?php /**  * [InterCommon-接口公用]  * @Author   RainCyan  * @DateTime 2019-08-12T16:38:08+0800  */ namespace app\hladmin\controller; use think\Controller; use \Firebase\JWT\JWT; 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"=>$e->getCode(), "msg"=>$e->getMessage()));         }     }     //签发token     private function _setJwtToken($string=""){         $key = $this->key;         $time = time();         $token = array(             "iss" => "http://ml.cn",             "aud" => "http://ml.cn",             'iat' => $time, //签发时间             'nbf' => $time + 10, //在什么时间之后该jwt才可用             'exp' => $time + 10, //过期时间             "string" => $string         );         $jwt = JWT::encode($token, $key);         return $jwt;     }     //解析token     protected function _readJwtToken($jwt){         $key = $this->key;         try {             JWT::$leeway = 60;//当前时间减去60,把时间留点余地             $decoded = JWT::decode($jwt, $key, ['HS256']); //HS256方式,这里要和签发的时候对应             $arr = (array)$decoded;             return json_msg(200, "success", $arr);         } catch(\Firebase\JWT\SignatureInvalidException $e) {  //签名不正确             return json_msg(-101, $e->getMessage());         }catch(\Firebase\JWT\BeforeValidException $e) {  // 签名在某个时间点之后才能用             return json_msg(-102, $e->getMessage());         }catch(\Firebase\JWT\ExpiredException $e) {  // token过期             return json_msg(-103, $e->getMessage());         }catch(Exception $e) {  //其他错误             return json_msg(-104, $e->getMessage());         }     }     //测试解析     public function _writeJwtToken($token){         halt($this->_readJwtToken($token));     } } ?>

本文来自ThinkPHP框架技术文章栏目:http://www.php.cn/phpkj/thinkphp/

以上就是ThinkPHP5 使用 JWT 进行加密的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: thinkphp5
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:thinkphp i方法

相关资讯