Laravel:JWT令牌已过期

时间:2018-05-04 12:38:57

标签: laravel jwt laravel-5.5

我正在为我的应用使用tymondesigns/jwt-auth包,但在一段时间后它会显示SyntaxError: non-keyword arg after keyword arg 消息。 我已经设置了token expired并删除了'ttl' => null,但它无效。

这是我的exp

config/jwt.php

是否有其他设置可以删除到期时间?

3 个答案:

答案 0 :(得分:1)

您可以做到

'ttl' => env('JWT_TTL', 1440)

将默认值60更改为1440将使令牌可持续使用一天,这对我有用,希望对您有帮助

答案 1 :(得分:1)

您可以执行此操作并使用动态计时来使您的令牌到期

 auth()->attempt($credentials, ['exp' => Carbon::now()->addYears(2)->timestamp])

或者这个

auth()->attempt($credentials, ['exp' => Carbon::now()->addMonths(2)->timestamp])

使用 Carbon 作为代币到期时间

答案 2 :(得分:0)

这样的话,如果令牌过期了,我想通过... 您可以将此代码放在中间件中..

public function handle($request, Closure $next, $guard = null)
{
    $token =  JWTAuth::getToken();
    try {
        $user = JWTAuth::authenticate($token);
    } catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
        return $next($request);
    } catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
        return response()->json([
            'status' => 500,
            'message' => 'Token Invalid',
        ], 500);
    } catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {
        return response()->json([
            'status' => 500,
            'message' => $e->getMessage(),
        ], 500);
    }
    return $next($request);
}

并且不要忘记在代码顶部包含 JWTAuth...

use Tymon\JWTAuth\Facades\JWTAuth;