Laravel (Lumen) 解决JWT-Auth刷新token的问题

吾爱主题 阅读:114 2021-09-14 15:42:00 评论:0

Laravel(Lumen)中使用JWT-Auth遇到一个问题,即token如何刷新。

一开始不太理解作者的设计思想,看了很多issue之后,慢慢明白jwt-refresh如何使用。

建一个路由,比如“auth/refresh-token” ,可以指向某个方法,也可以直接写个匿名函数。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 $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的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/HOOLOO/article/details/50649712

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容