动态设置 laravel jwt 的到期时间

2022-08-30 20:58:46

嗨,我在前端使用角js,在后端使用satellizer和laravel,在tymon jwt库。我正在使用 jwt 身份验证。我想在我的Web应用程序中记住我的功能。我看到'ttl'在laravel 'config/jwt.php中设置令牌的到期时间。

 /*
|--------------------------------------------------------------------------
| JWT time to live
|--------------------------------------------------------------------------
|
| Specify the length of time (in minutes) that the token will be valid for.
| Defaults to 1 hour
|
*/

'ttl' => 60,

默认情况下,它将是 1 小时。但是我想将此动态更改为1周,如果用户在登录时单击记住我。我怎样才能动态地改变它。谢谢。


答案 1

可以添加为自定义声明,如下所示:exp

$token = JWTAuth::attempt($credentials, ['exp' => Carbon\Carbon::now()->addDays(7)->timestamp]);

上面的代码创建一个在 7 天后过期的令牌。你不必使用它只需要一个Unix时间戳,为了简单起见,我在这里使用了它,因为它内置于Laravel中。CarbonCarbon


答案 2

您可以使用(1.0版本)JWTFactory

$myTTL = 30; //minutes

JWTAuth::factory()->setTTL($myTTL);
$token = JWTAuth::attempt($credentials);

推荐