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 相关文章推荐
PHP4(windows版本)中的COM函数
Oct 09 PHP
PHP个人网站架设连环讲(四)
Oct 09 PHP
php5数字型字符串加解密代码
Apr 24 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
Feb 03 PHP
php 求质素(素数) 的实现代码
Apr 12 PHP
destoon二次开发入门示例
Jun 20 PHP
php生成rss类用法实例
Apr 14 PHP
合格的PHP程序员必备技能
Nov 13 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
Jan 19 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 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服务器实现多session并发运行
2006/10/09 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
python中os操作文件及文件路径实例汇总
2015/01/15 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
Python断言assert的用法代码解析
2018/02/03 Python
代码详解django中数据库设置
2019/01/28 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
python tkinter基本属性详解
2019/09/16 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
如何写出高性能的JSP和Servlet
2013/01/22 面试题
圣诞节红领巾广播稿
2014/02/03 职场文书
出差报告怎么写
2014/11/06 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS
JavaScript中reduce()的用法
2022/05/11 Javascript