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侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
Oct 15 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 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 include任意文件或URL介绍
2014/04/29 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
Python的高级Git库 Gittle
2014/09/22 Python
python人人网登录应用实例
2014/09/26 Python
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python读取properties配置文件操作示例
2018/03/29 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
同程旅游英文网站:LY.com
2018/11/13 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
党员公开承诺书
2014/03/25 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
库房管理员岗位职责
2015/02/12 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
2015党建工作简报
2015/07/21 职场文书
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android