Laravel jwt身份验证令牌已过期,token_invalid

时间:2018-01-19 15:43:56

标签: php laravel api authentication jwt-auth

我有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;
}

0 个答案:

没有答案