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 XML操作的各种方法解析(比较详细)
Jun 17 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 PHP
PHP生成随机用户名和密码的实现代码
Feb 27 PHP
使用PHP实现蜘蛛访问日志统计
Jul 05 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
PHP借助phpmailer发送邮件
May 11 PHP
php结合curl实现多线程抓取
Jul 09 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
php中各种定义变量的方法小结
Oct 18 PHP
laravel orm 关联条件查询代码
Oct 21 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
一个PHP的String类代码
2010/04/20 PHP
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
PHP多态代码实例
2015/06/26 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
php常用的工具开发整理
2019/09/26 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
js 字符串操作函数
2009/07/25 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
Python中optparser库用法实例详解
2018/01/26 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
opencv实现图像几何变换
2021/03/24 Python
生产厂长岗位职责
2014/02/21 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
保安2014年终工作总结
2014/12/06 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python