Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel jwt身份验证令牌已过期_Laravel_Vue.js_Jwt_Jwt Auth - Fatal编程技术网

Laravel jwt身份验证令牌已过期

Laravel jwt身份验证令牌已过期,laravel,vue.js,jwt,jwt-auth,Laravel,Vue.js,Jwt,Jwt Auth,我正在为我的SPA使用jwt auth和vue auth。出于测试目的,我将vue auth的配置文件中的refreshData变量设置为1,以便每分钟刷新一次。对于jwt auth config文件,我将ttl设置为1,将refresh\u ttl设置为3 我可以登录并接收令牌。我在本地存储中看到它。在前3分钟内,我每分钟都会成功刷新一次,并且我看到本地存储中的令牌发生了更改,但第4次,我收到了一个错误 {message: "Token has expired and can no longe

我正在为我的SPA使用jwt auth和vue auth。出于测试目的,我将vue auth的配置文件中的refreshData变量设置为1,以便每分钟刷新一次。对于jwt auth config文件,我将ttl设置为1,将refresh\u ttl设置为3

我可以登录并接收令牌。我在本地存储中看到它。在前3分钟内,我每分钟都会成功刷新一次,并且我看到本地存储中的令牌发生了更改,但第4次,我收到了一个错误

{message: "Token has expired and can no longer be refreshed",…}
exception: "Tymon\JWTAuth\Exceptions\TokenExpiredException"

为什么会这样?因为我正在刷新令牌,所以我认为刷新ttl根本不重要,但它似乎确实在命令这一点

在AuthController中尝试更改

$this->middleware('auth:api', ['except' => ['login']]);
进入


在auth controller刷新功能中,请更改:

return response()->json([
        "success" => true,
        "payload" => [
            'access_token' => auth()->refresh(),
            'token_type' => 'bearer',
            'expires_in' => auth()->factory()->getTTL() * 60,
            'user' => auth()->user()
        ]
    ]);
您需要更改config/auth.php,如下所示:

    'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
        'hash' => false,
    ],
],

如果您不想让config jwt.php replace中的token thn过期,这里有一个很好的例子

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


 'required_claims' => [
        'iss',
        'iat',
        // 'exp',
        'nbf',
        'sub',
        'jti',
    ],
然后击中

php artisan config:cache

您可以将ttl设置为null,以生成永不过期的令牌

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

或者直接放弃.env

您不能使用该软件包。您可以做的是将config/jwt.php文件中的过期时间设置为7天,这样,如果用户进行身份验证,令牌将在7天后过期

'ttl' => env('JWT_TTL', 60*24*7),
该值以分钟为单位

'ttl' => env('JWT_TTL', 60*24*7),