Laravel (Lumen) 解决JWT-Auth刷新token的问题


Posted in PHP onOctober 24, 2019

Laravel(Lumen)中使用JWT-Auth遇到一个问题,即token如何刷新。

一开始不太理解作者的设计思想,看了很多issue之后,慢慢明白jwt-refresh如何使用。

建一个路由,比如“auth/refresh-token” ,可以指向某个方法,也可以直接写个匿名函数。

$app->post('auth/refresh-token', ['middleware' => 'jwt.refresh', function() {
  try {
    $old_token = JWTAuth::getToken();
    $token = JWTAuth::refresh($old_token);
    JWTAuth::invalidate($old_token);
  } catch (TokenExpiredException $e) {
    throw new AuthException(
      Constants::get('error_code.refresh_token_expired'),
      trans('errors.refresh_token_expired'), $e);
  } catch (JWTException $e) {
    throw new AuthException(
      Constants::get('error_code.token_invalid'),
      trans('errors.token_invalid'), $e);
  }
 
  return response()->json(compact('token'));
}]);

当token失效之后,访问这个地址,把旧token带上,会得到一个新的token。自己将新token保存,访问api时使用新token。如此反复。

虽然token的有效很短,默认是一个小时,但是刷新时间长达两个星期,还算可以,总比重复登录来得方便。

客户端登录之后只要保存token,减少了被获取用户名密码的风险。

这个地方有个bug,就是旧token虽然不能再使用,但是却可以用来获取新token。这个问题在0.6版中被修复。如果着急这个问题可以使用0.6版。

一开始以为一个token刷新之后可以接着用,原来是换个新token,不知道接着用的思想是否可行。

以上这篇Laravel (Lumen) 解决JWT-Auth刷新token的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP常用代码
Nov 23 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
php中防止恶意刷新页面的代码小结
Oct 31 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
CI框架表单验证实例详解
Nov 21 PHP
php图像处理函数imagecopyresampled用法详解
Dec 02 PHP
[原创]php实现数组按拼音顺序排序的方法
May 03 PHP
在php的yii2框架中整合hbase库的方法
Sep 20 PHP
深入解析PHP底层机制及相关原理
Dec 11 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 #PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 #PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 #PHP
laravel解决迁移文件一次删除创建字段报错的问题
Oct 24 #PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 #PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 #PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 #PHP
You might like
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
如何在PHP中生成随机数
2020/06/04 PHP
js parsefloat parseint 转换函数
2010/01/21 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
python爬虫爬取网页表格数据
2018/03/07 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
explicit和implicit的含义
2012/11/15 面试题
艺术应用与设计个人的自我评价
2013/11/23 职场文书
合作意向书模板
2014/03/31 职场文书
父母寄语大全
2014/04/12 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技