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 相关文章推荐
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
PHP准确取得服务器IP地址的方法
Jun 02 PHP
php中文验证码实现方法
Jun 18 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
利用php生成验证码
Feb 23 PHP
CI框架网页缓存简单用法分析
Dec 26 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 PHP
PHP操作Redis常用命令的实例详解
Dec 23 PHP
PHP实现页面静态化深入讲解
Mar 04 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
PHP如何抛出异常处理错误
2011/03/02 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
python代码实现ID3决策树算法
2017/12/20 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Python 控制终端输出文字的实例
2019/07/12 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
什么是聚集索引和非聚集索引
2012/01/17 面试题
文秘大学生求职信
2014/02/25 职场文书
小学家庭教育心得体会
2016/01/14 职场文书