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 相关文章推荐
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
Apr 02 PHP
php whois查询API制作方法
Jun 23 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
php验证session无效的解决方法
Nov 04 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
ThinkPHP内置jsonRPC的缺陷分析
Dec 18 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
PHP 无限级分类
May 04 PHP
浅谈laravel orm 中的一对多关系 hasMany
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
使用PHP静态变量当缓存的方法
2013/11/13 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
js AspxButton的客户端操作
2009/06/26 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Python3 能振兴 Python的原因分析
2014/11/28 Python
python使用webbrowser浏览指定url的方法
2015/04/04 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
浅谈Python处理PDF的方法
2017/11/10 Python
用python实现百度翻译的示例代码
2018/03/09 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
Django ModelForm操作及验证方式
2020/03/30 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
如何在django中运行scrapy框架
2020/04/22 Python
python实现自动清理重复文件
2020/08/24 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
巴西手表购物网站:eclock
2019/03/19 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
业务员薪酬管理制度
2014/01/15 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang