我有jwt auth令牌到期的问题。情况如下:
我将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');
});
我很困惑为什么令牌没有自动刷新,我是否需要明确指定刷新令牌的地方,我不这么认为?
'refresh_ttl'=> 20160年,在jwt.php。端点如下所示:
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;
}