使用 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. PHP中,json汉字编码

    当用json与js或者其它客户端交互时,如果有中文,则会变成unicode.虽然能使用,但是影响观看.不好调试呀.从网上找到了几个方法 一,用下面这个函数,需要编码时,直接调用这个函数就成 funct ...

  2. Winform中设置ZedGraph的曲线为折线、点折线、散点图

    场景 Winform中设置ZedGraph的曲线为散点图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102465399 在上 ...

  3. js中this绑定方式及如何改变this指向

    this的绑定方式基本有以下几种: 隐式绑定 显式绑定 new 绑定 window 绑定 箭头函数绑定 隐式绑定 第一个也是最常见的规则称为 隐式绑定. var a = { str: 'hello', ...

  4. ASP.NET Core 2.2 和之前版本区别: 可以在IIS上进行ASP.NET核心进程托管 (翻译)

    原文链接: https://weblog.west-wind.com/posts/2019/Mar/16/ASPNET-Core-Hosting-on-IIS-with-ASPNET-Core-22 ...

  5. windows10 docker安装使用

    一.安装部署 1.下载安装 https://hub.docker.com/editions/community/docker-ce-desktop-windows 需要注册完后,才可以下载.点击安装 ...

  6. Spring Cloud Turbine 知识点

    Turbine 默认使用 Eureka 作为注册中心:如果使用 Consul 作为注册中心,需要排除掉 Eureka:pom.xml 如下: <dependency> <groupI ...

  7. MyBatis源码 核心配置解析 properties元素

    XMLConfigBuilder的parseConfiguration(XNode)方法,用于解析配置文件 XMLConfigBuilder的propertiesElement(XNode)方法,用于 ...

  8. input 关键字提示,对于一些特定优化来说,很有用处

    只用html就可以做出提醒操作:效果如下图 这里是代码,怎么样,很简单吧 <form action="/server" method="post"> ...

  9. AtCoder Grand Contest 038题解

    好久没更了 写点东西吧= = A 01Matrix 简单构造 左上角和右下角染成1其他染成0即可 #include<bits/stdc++.h> #define ll long long ...

  10. ToDoList--HttpMediaTypeNotSupportedException

    org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-url ...