thinkphp的jwt(JSON Web Token)身份验证包。支持Header、Cookie、Param等多种传参方式。包含:验证、验证并且自动刷新等多种中间件。
[thinkphp6.0的demo下载](https://gitee.com/thans/jwt-auth/attach_files/306748/download)
## [](https://gitee.com/thans/jwt-auth#%E6%94%AF%E6%8C%81swoole)支持Swoole
## [](https://gitee.com/thans/jwt-auth#%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82)环境要求
1. php >= 7.0
2. thinkphp ^5.1.10 || ^6.0.0
> 目前支持如下三大类型加密方式:RSA,HASH,DSA。再各分256、384、512位。 默认是HS256,即hash 256位加密。
> 需要修改加密方式,请修改参数:ALGO,参数选项:
* HS256
> 备注:hash 256位
* HS384
> 备注:hash 384位
* HS512
> 备注:hash 512位
* RS256
> 备注:rsa 256位
* RS384
> 备注:rsa 384位
* RS512
> 备注:rsa 512位
* ES256
> 备注:dsa 256位
* ES384
> 备注:dsa 384位
* ES512
> 备注:dsa 512位
> 重要:RSA和DSA 都是非对称加密方式,除了修改参数ALGO外,需要配置:PUBLIC\_KEY、PRIVATE\_KEY两个参数, 这两个参数支持文本(不要开头、结尾和换行)或密钥文件路径。如果密钥设置了密码,请配置好参数:PASSWORD
> env文件不支持内容有等于号,遇到这种情况: 1、使用路径 2、生成没有等于号的密钥。
## [](https://gitee.com/thans/jwt-auth#%E5%AE%89%E8%A3%85)安装
第一步:
~~~
$ composer require thans/tp-jwt-auth
~~~
第二步:
~~~
$ php think jwt:create
~~~
此举将生成jwt.php和.env配置文件。不推荐直接修改jwt.php 同时,env中会随机生成secret。请不要随意更新secret,也请保障secret安全。
## [](https://gitee.com/thans/jwt-auth#%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F)使用方式
对于需要验证的路由或者模块添加中间件:
~~~
thans\jwt\middleware\JWTAuth::class,
~~~
示例:
~~~
use thans\jwt\facade\JWTAuth;
$token = JWTAuth::builder(['uid' => 1]);//参数为用户认证的信息,请自行添加
JWTAuth::auth();//token验证
JWTAuth::refresh();//刷新token,会将旧token加入黑名单
$tokenStr = JWTAuth::token()->get(); //可以获取请求中的完整token字符串
$payload = JWTAuth::auth(); //可验证token, 并获取token中的payload部分
$uid = $payload['uid']->getValue(); //可以继而获取payload里自定义的字段,比如uid
~~~
token刷新说明:
> token默认有效期为60秒,如果需要修改请修改env文件。 refresh\_ttl为刷新token有效期参数,单位为分钟。默认有效期14天。 token过期后,旧token将会被加入黑名单。 如果需要自动刷新,请使用中间件 thans\\jwt\\middleware\\JWTAuthAndRefresh::class, 自动刷新后会通过header返回,请保存好。(注意,此中间件过期后第一次访问正常,第二次进入黑名单。)
token传参方式如下:
> 可通过jwt.php配置文件内token\_mode参数来调整参数接收方式及优先级 token\_mode默认值为\['header', 'cookie', 'param'\];
> 在某些前后端分离的情况下可选择取消cookie接收方式来避免token冲突
* 将token加入到url中作为参数。键名为token
* 将token加入到cookie。键名为token
* 将token加入header,如下:Authorization:bearer token值
* 以上三种方式,任选其一即可。推荐加入header中。
#### [](https://gitee.com/thans/jwt-auth#%E5%85%B6%E4%BB%96%E6%93%8D%E4%BD%9C)其他操作
1. 拉黑Token JWTAuth::invalidate($token);
2. 查询Token是否黑名单 JWTAuth::validate($token);
#### [](https://gitee.com/thans/jwt-auth#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)常见问题
* 使用RSA256方式的时候,请使用文本形式。
- 空白目录
- thinkcmf的权限管理
- thinkcmf+unicmf添加页面
- Thinkphp5做后台 Uni-app做前台解决跨域问题
- 组件
- h5跨域-uniapp
- thinkphp5 auth 教程
- thinkphp5Auth类
- uniapp添加与编辑的差别
- 常见的请求方式
- uni 单选回显数据_uniapp 页面跳转传值和接收
- uni-app 单选/多选/滑动 demo
- 关于uniapp checkbox多选框如何传值传数据
- uniApp 多选框checkbox ,判断是否选中
- uniapp添加复选框和获取复选框的值
- uni-app中全选多选单选
- uniapp多选框CheckBox 数据接收
- uniapp下拉列表单选框复选框实战demo(编辑或详情页)
- uni-data-CheckBox-OK
- js 字符串数组转换成数字数组
- js把字符串转为数组对象
- js中数组对象字符串的相互转换
- JS怎么把字符串数组转换成整型数组
- 小程序开发
- tp5.1跨域请求
- uniapp-h5跨域
- 新增
- order
- uni-app中调取接口的三种方式与封装uni.request()
- uView-checkbox
- 给u-view的u-select赋值
- uView-下拉框、复选框、单选框 数据发送及接收
- CURD操作
- thinkphp5.1增删改查
- TP5.1添加数据成功之后返回自增主键id
- Thinkphp实战之Request默认值except only 以及过滤参
- uni-app跨域解决方案
- thinkphp5.1+uni-app接口开发中跨域问题解决方案
- tp6 + uniapp 前后端跨域解决方案
- uniapp-token相关
- uniapp request请求封装包含token兼容多端,简单易用
- CORS.php
- ThinkPHP6 API开发前后端分离用户信息保存在后端的方法
- thinkphp的jwt(JSON Web Token)身份验证
- thinkphp6增删改查
- PHP模拟GET,POST请求
- php模拟get、post发送请求的6种方法
- thinkphp6
- uniapp封装网络请求
- thinkphp6搭建后端api接口jwt-auth
- uniapp实现APP微信登录流程
- [uni-app] 中保持用户登录状态
- 详解vue中localStorage的使用方法
- vue 实现通过vuex 存储值 在不同界面使用
- dispatch:异步操作,数据提交至 actions ,可用于向后台提交数据
- ThinkPHP6.0 + Vue + ElementUI + axios 的环境安装到实现 CURD 操作
- tp6错误集
- TP6 模型插入/添加数据,自动插入时间(自动时间戳)
- 手机不开机维修思路
- thinkphp6解决vue跨域问题
- 从0基础获取短视频去水印解析接口制作
- thinkphp5 删除缓存
- thinkPHP,怎么把json文件里面的数据导入数据库
- 数字转字符php
- php – 直接用curl下载远程文件
- thinkphp – 直接用curl下载远程文件
- apiAdmin安装
- echart
- thinkphp开发小程序推广分享带参数二维码生成
- php同比增加函数
- PHP获取同比上周、上一个月,上一个季度,去年时间区间
- “前3秒”金句100例,赶紧收藏起来!
- PHP配合微信公众号生成推广二维码
- thinkphp5+php微信公众号二维码扫码关注推广二维码事件实现
- 获取当前时间上一周的开始时间和结束时间
- TP6 查找指定工作日
- PHP 获取当天、近一周、本周、上月、本月、本季度、上季度时间方法大全
- php获取今日、昨日、本周、本月 日期方法
- Tp5+mysql按年季度月周日小时查询时无数据的时间段补0方法
- mysql按天统计的时候,该天没有数据也要统计为0
- 列出一星期的日期 无数据补0
- thinkphp6本周 上周 周一 周末日期
- 补全日期 无数据补0
- php+pv统计代码实现,Laravel 10 行代码实现简单的网站 pv uv 统计
- 通过API获取ip地址以及城市和运营商
- 获取访客信息
- 13行代码实现微信小程序设置概率触发激励视频阅读文章
- uniapp 微信小程序 获取场景值和场景值个性化参数
- 微信小程序分享小程序码的生成(带参数)以及参数的获取
- 小程序推广分享带参数二维码生成
- uniapp微信小程序生成对应页面二维码
- uniapp获取当前页面url
- uniapp微信小程序--微信登录
- 微信小程序,生成小程序码中scene参数的存放和获取问题
- uni-app 微信小程序生成二维码带参数
- uni-app 微信小程序如何把图片保存到本地相册?
- thinkPHP5使用assign()传递富文本,前端解析成HTML标签
- tp6解析编辑器里面的html标签原样输出
- PHP判断url链接是否被百度收录
- 微擎安装模块时提示 Failed to connect to we7.rewlkj.com port 80: Timed out
- 小程序码生成
- thinkphp开发小程序推广分享带参数二维码生成0
- tp3.2伪静态
- apiadmin安装教程-2022.8更新
- autojs事件代码
- uuuu
- thinkphp6: API 多版本控制