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
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
php生成随机密码的几种方法
Jan 17 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
php计算数组相同值出现次数的代码(array_count_values)
Jan 20 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
php数组和链表的区别总结
Sep 20 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
python判断设备是否联网的方法
2018/06/29 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
建筑工程自我鉴定
2013/10/18 职场文书
超市端午节活动方案
2014/01/23 职场文书
党组织公开承诺书
2014/03/29 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
2014年新教师工作总结
2014/11/08 职场文书
鲁迅故居导游词
2015/02/05 职场文书
个人总结格式范文
2015/03/09 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
公司考勤管理制度
2015/08/04 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis