1

我对 jwt 身份验证令牌到期有疑问。情况如下:

我有一个用 laravel 编写的 API 作为一个项目。此 API 使用另一个 laravel 项目(客户端)。但是当我尝试登录用户时,一切都很好,但后来我开始意识到在 TTL(60 分钟)(生存时间)过去之后,然后当我尝试获取用户资源时(这需要用户登录)我得到 json 错误响应 {"error" => "token_expired"}。

这是我使用 jwt.auth 中间件的代码的路由部分:

Route::group(['middleware' => 'jwt.auth'], function () {
    Route::get('account/getUserDetails', 'Api\AccountController@getUserDetails');
});

我很困惑为什么令牌没有自动刷新,我是否需要明确指定某个地方来刷新令牌,我不这么认为?

jwt.php 中的 'refresh_ttl' => 20160。端点如下所示:

public function getUserDetails(Request $request)
{

    try {
        if (! $user = JWTAuth::parseToken()->authenticate()) {

            return response()->json(['user_not_found'], 404);
        }

    } catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {

        $refreshed = JWTAuth::refresh(JWTAuth::getToken());
        $user = JWTAuth::setToken($refreshed)->toUser();
        return $this->response->withArray(['token' => $refreshed]);
    } catch (Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {

        return response()->json(['token_invalid'], $e->getStatusCode());

    } catch (Tymon\JWTAuth\Exceptions\JWTException $e) {

        return response()->json(['token_absent'], $e->getStatusCode());

    }

    return $user;
}
4

0 回答 0