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下利用header()函数设置浏览器缓存的代码
Sep 01 PHP
PHP is_subclass_of函数的一个BUG和解决方法
Jun 01 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
php实现的农历算法实例
Aug 11 PHP
php中preg_match的isU代表什么意思
Oct 01 PHP
开启PHP Static 关键字之旅模式
Nov 13 PHP
iOS+PHP注册登录系统 PHP部分(上)
Dec 26 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 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 SQLite类
2009/05/07 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
php链表用法实例分析
2015/07/09 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
jquery JSON的解析方式
2009/07/25 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
python 获取et和excel的版本号
2009/04/09 Python
python中定义结构体的方法
2013/03/04 Python
详解python中requirements.txt的一切
2017/03/03 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
大数据分析用java还是Python
2020/07/06 Python
Django如何批量创建Model
2020/09/01 Python
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
大专自我鉴定范文
2013/10/01 职场文书
小学教育见习报告
2014/10/31 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏