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也可以?成Shell Script
Oct 09 PHP
在Windows版的PHP中使用ADO
Oct 09 PHP
PHP安装攻略:常见问题解答(一)
Oct 09 PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 PHP
PHP 正则表达式常用函数
Aug 17 PHP
php通过修改header强制图片下载的方法
Mar 24 PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
thinkPHP5.0框架事务处理操作简单示例
Sep 07 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
May 02 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
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
js右键菜单效果代码
2007/07/21 Javascript
js 与或运算符 || && 妙用
2009/12/09 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
python中的列表推导浅析
2014/04/26 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
python实现换位加密算法的示例
2018/10/14 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
入党申请自荐书范文
2014/02/11 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
病危通知单
2015/04/17 职场文书
企业法人代表证明书
2015/06/18 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB