ThinkPHP5 使用 JWT 进行加密
使用 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 进行加密的更多相关文章
- 【JWT】JWT+HA256加密 Token验证
目录 Token验证 传统的Token验证 JWT+HA256验证 回到顶部 Token验证 最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twi ...
- jwt 接口加密
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- ThinkPHP5使用jwt进行会话验证
以往,没有做过前后端分离的项目之前,都是服务器渲染的模板,然后用cookie和session进行账号的权限验证或者是登录状态的管理.后来接触了vue和小程序之后,在进行前后端分离的时候,就会遇到权限验 ...
- thinkphp5加密解密
thinkphp5目前没有提供加密解密类,但是tp3.2中提供了好几种加密解密方法,我们可以吧3.2的这些类拿来使用. 1.将tp3.2中ThinkPHP\Library\Think的Crypt文件夹 ...
- ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统
为什么使用 Jwt 最近,移动开发的劲头越来越足,学校搞的各种比赛都需要用手机 APP 来撑场面,所以,作为写后端的,很有必要改进一下以往的基于 Session 的身份认证方式了,理由如下: 移动端经 ...
- 使用python实现后台系统的JWT认证(转)
今天的文章介绍一种适用于restful+json的API认证方法,这个方法是基于jwt,并且加入了一些从oauth2.0借鉴的改良. 1. 常见的几种实现认证的方法 首先要明白,认证和鉴权是不同的.认 ...
- 什么是JWT(JSON WEB TOKEN)
转自于:http://www.jianshu.com/p/576dbf44b2ae 什么是JWT Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准( ...
- JWT(JSON Web Token) 多网站的单点登录,放弃session
多个网站之间的登录信息共享, 一种解决方案是基于cookie - session的登录认证方式,这种方式跨域比较复杂. 另一种替代方案是采用基于算法的认证方式, JWT(json web token) ...
- 深入浅出JWT(JSON Web Token )
1. JWT 介绍 JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON对象安全传输信息. 这些信息可以通过数字签名进行 ...
随机推荐
- python3 + robotframework ride 乱码问题
执行ride时乱码问题 如果被执行的文件所在路径中含有中文,执行时可能会报如下错误 robotframework版本:robotframework-ride 1.7.3.1python 3.7.3 解 ...
- English--倒装句
English|倒装句 这一块主要进行英语中倒装句与强调句的透析,希望大家可以掌握倒装句.因为倒装句,实在是太常见了,加油哦~~ 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...
- C# 读取Excel文件数据
1.首先需要在管理NuGet程序包中添加外部包:ExcelDataReader,添加好后,不要忘记在命名空间那里引用. 2.定义文件流,将文件流传入IExcelDataReader类型的对象excel ...
- centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问
acme.sh介绍:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E github:https://github.com/Neil ...
- node中glob模块总结
参考文章: githup_glob node-glob学习 前言: 最近在学习webpack配置, 其中有一项glob配置入口文件, 来获取对应的文件名, 达到入口entry和output文 ...
- The run destination "设备名称" is not valid for Running the scheme '项目名称'.
之前运行好好的,怎么会突然出现这个呢?开始百度发现都解决不了. 最后发现,这是XCode的一个bug.遇到这种情况只要Command+Q,退去XCode,然后再重新登入即可.
- @TableField
@TableField 描述:字段注解(非主键) 属性 类型 必须指定 默认值 描述 value String 否 "" 字段名 el String 否 "" ...
- java生成前端验证码+验证「kaptcha」
1.前言 kaptcha是一个非常实用的短信验证码生成工具,通过简单配置即可实现多样化的验证码. 2.引入依赖 <!--第三方验证码--><dependency> < ...
- Spring Cloud微服务安全实战_3-1_API安全 常见的安全机制
本章讲解,在不考虑微服务,只考虑一个简单的API ,如何保证这个API的安全? 三个问题: 1,什么是API ? 2,API安全的要素有哪些? 3,API安全基本机制 一.什么是API 百度百科:AP ...
- rpm 子包创建学习
rpm 在打包的时候,可以创建子包,这样可以清晰的进行软件包的拆分,以下是结合官方文档学习 的一个实践 预备条件 需要安装rpmdevtools spec 文件 内容 Name: foo Versio ...


