我在SPA中使用了jwt-auth和vue-auth。出于测试目的,我在vue-auth的配置文件中将refreshData变量设置为1,以便每分钟刷新一次。对于jwt-auth配置文件,我将ttl设置为1,将refresh_ttl设置为3。
我可以登录并接收令牌。我在localStorage中看到了。在前3分钟,我每分钟都会成功刷新一次,并且我看到localStorage中的令牌正在更改,但在第4分钟,我得到了一个错误。
{message: "Token has expired and can no longer be refreshed",…}
exception: "Tymon\JWTAuth\Exceptions\TokenExpiredException"为什么会这样呢?因为我正在刷新令牌,所以我认为refresh_ttl甚至无关紧要,但它看起来确实决定了这一点。
发布于 2021-07-11 17:24:00
我也有同样的问题,我尝试了所有我能在网上找到的东西,但没有一个想要工作。因此,我自己研究了config/jwt.php文件,并通过修改文件的以下行来解决它:
'refresh_ttl' => env ('JWT_REFRESH_TTL', 20160),出自:
'refresh_ttl' => env ('JWT_REFRESH_TTL', Null),在此之前,我还修改了这一行:
'ttl' => env ('JWT_TTL', 60),出自:
'ttl' => env ('JWT_TTL', NULL),希望它能帮助其他人:)。
发布于 2019-03-18 16:13:10
在你的AuthController中尝试改变
$this->middleware('auth:api', ['except' => ['login']]);转到
$this->middleware('auth:api', ['except' => ['login', 'refresh']]);发布于 2019-03-18 16:20:51
在您的身份验证控制器刷新功能中,请更改:
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,
],
],下面是一个很好的laravel-jwt-vuejs示例
https://stackoverflow.com/questions/55216903
复制相似问题