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的安全
Oct 09 PHP
需要发散思维学习PHP
Jun 29 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
php做下载文件的实现代码及文件名中乱码解决方法
Feb 03 PHP
php实现邮件发送并带有附件
Jan 24 PHP
smarty内置函数config_load用法实例
Jan 22 PHP
3种php生成唯一id的方法
Nov 23 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
PHP共享内存用法实例分析
Feb 12 PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 PHP
PHP面向对象程序设计方法实例详解
Dec 24 PHP
PHP实现数据四舍五入的方法小结【4种方法】
Mar 27 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
检查url链接是否已经有参数的php代码 添加 ? 或 &
2010/02/09 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
js创建对象的方式总结
2015/01/10 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
python中sets模块的用法实例
2014/09/30 Python
python中反射用法实例
2015/03/27 Python
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
Python中按键来获取指定的值
2019/03/02 Python
Python笔记之代理模式
2019/11/20 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
工业学校毕业生自荐信范文
2014/01/03 职场文书
五好关工委申报材料
2014/05/31 职场文书
绿色出行口号
2014/06/18 职场文书
银行委托书范本
2014/09/28 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书