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 相关文章推荐
如何跨站抓取别的站点的页面的补充
Oct 09 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
php自定义错误处理用法实例
Mar 20 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
PHP邮件群发机实现代码
Feb 16 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 PHP
PHP正则表达式之RCEService回溯
Apr 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中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
以一段代码为实例快速入门Python2.7
2015/03/31 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
pandas的qcut()方法详解
2019/07/06 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
前台文员的岗位职责
2013/11/14 职场文书
求职简历中自我评价
2014/01/28 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
个人授权委托书
2014/09/15 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
个人年终总结范文
2015/03/09 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
python tkinter模块的简单使用
2021/04/07 Python