使用 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));

    }

}

?>

链接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取码:x2p5

免费分享,但是X度限制严重,如若链接失效点击链接或搜索加群 群号518475424

 

ThinkPHP5 使用 JWT 进行加密的更多相关文章

  1. 【JWT】JWT+HA256加密 Token验证

    目录 Token验证 传统的Token验证 JWT+HA256验证 回到顶部 Token验证 最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twi ...

  2. jwt 接口加密

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  3. ThinkPHP5使用jwt进行会话验证

    以往,没有做过前后端分离的项目之前,都是服务器渲染的模板,然后用cookie和session进行账号的权限验证或者是登录状态的管理.后来接触了vue和小程序之后,在进行前后端分离的时候,就会遇到权限验 ...

  4. thinkphp5加密解密

    thinkphp5目前没有提供加密解密类,但是tp3.2中提供了好几种加密解密方法,我们可以吧3.2的这些类拿来使用. 1.将tp3.2中ThinkPHP\Library\Think的Crypt文件夹 ...

  5. ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统

    为什么使用 Jwt 最近,移动开发的劲头越来越足,学校搞的各种比赛都需要用手机 APP 来撑场面,所以,作为写后端的,很有必要改进一下以往的基于 Session 的身份认证方式了,理由如下: 移动端经 ...

  6. 使用python实现后台系统的JWT认证(转)

    今天的文章介绍一种适用于restful+json的API认证方法,这个方法是基于jwt,并且加入了一些从oauth2.0借鉴的改良. 1. 常见的几种实现认证的方法 首先要明白,认证和鉴权是不同的.认 ...

  7. 什么是JWT(JSON WEB TOKEN)

    转自于:http://www.jianshu.com/p/576dbf44b2ae 什么是JWT Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准( ...

  8. JWT(JSON Web Token) 多网站的单点登录,放弃session

    多个网站之间的登录信息共享, 一种解决方案是基于cookie - session的登录认证方式,这种方式跨域比较复杂. 另一种替代方案是采用基于算法的认证方式, JWT(json web token) ...

  9. 深入浅出JWT(JSON Web Token )

    1. JWT 介绍 JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON对象安全传输信息. 这些信息可以通过数字签名进行 ...

随机推荐

  1. python 正则表达式、re

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. 参考链接:https://www.runoob.com/python/python-reg-expressions. ...

  2. mysql锁机制总结,以及优化建议

    一.锁概述和分类 二.表锁 偏向MyISAM存储引擎,开销小,加锁快:无死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. [手动增加表锁] lock table 表名字1 read(write), ...

  3. GIT篇章(一)

    git的使用 创建代码版本 cd进入到自己希望存储代码的目录路径,并创建本地仓库.git[pycharm直接打开终端就是项目根目录了.无须cd了] 新创建的本地仓库.git是个空仓库 cd 目录路径 ...

  4. 开发技术-IPython介绍

    开发技术-IPython介绍 IPython是交互式的Python命令行,希望大家喜欢. 最近在回顾之前学习的内容,并且继续学习新的知识.这种自身的感觉,很不一般,有太多的感想产生.希望自己可以坚持将 ...

  5. 关于less的一些入门用法

    less 变量(Variables) @nice-blue: #5B83AD; @light-blue: @nice-blue + #111; #header { color: @light-blue ...

  6. office viso 2007根据现有数据库建立数据库模型图

    当数据库表很多的时候,表之间的关系就变得很复杂.光凭记忆很难记住,尤其是数据库键值没有外键约束时. 所以有个数据库模型图各个表之间的关系就显而易见了. 打开 office viso 2007 文件&g ...

  7. nginx 安装第三方模块(lua)并热升级

    需求: nginx上将特定请求拒绝,并返回特定值. 解决办法: 使用lua脚本,实现效果. 操作步骤: 安装Luajit环境 重新编译nginx(目标机器上nginx -V 配置一致,并新增两个模块n ...

  8. 目标检测论文解读13——FPN

    引言 对于小目标通常需要用到多尺度检测,作者提出的FPN是一种快速且效果好的多尺度检测方法. 方法 a,b,c是之前的方法,其中a,c用到了多尺度检测的思想,但他们都存在明显的缺点. a方法:把每图片 ...

  9. SSH端口转发之本地转发

    一.案例环境: 3台RHEL6.5 64虚拟机(分别为:HostA.HostB.HostC) IP地址: HostA:192.168.100.101 HostB:192.168.100.102 Hos ...

  10. 微信小程序 组件 全局样式

    配置如下设置   /** * 组件的一些选项 */ options: { addGlobalClass: true },