laravel jwt 怎么设置token过期时间
时间: 2023-09-28 08:13:22 浏览: 291
在Laravel中使用JWT,您可以使用tymondesigns/jwt-auth包来生成和验证JWT。要设置JWT的过期时间,您需要在Laravel配置文件中定义一个默认的过期时间,并在生成JWT时覆盖该默认值。以下是如何在Laravel中设置JWT的过期时间:
1. 首先,您需要在config/jwt.php文件中定义默认的过期时间:
```php
'jwt' => [
'ttl' => env('JWT_TTL', 60), // 默认过期时间为60分钟
],
```
2. 在生成JWT时,您可以使用`JWTFactory`类来覆盖默认的过期时间。例如:
```php
use Tymon\JWTAuth\Facades\JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
$payload = [
'user_id' => 1,
'exp' => Carbon\Carbon::now()->addHours(2)->timestamp, // 过期时间为2小时
];
try {
$token = JWTAuth::fromUser($user, $payload);
} catch (JWTException $e) {
// 处理异常
}
```
在上面的例子中,我们使用`Carbon`类来计算过期时间,并将其作为payload的一部分传递给`fromUser`方法。
3. 您还可以通过在路由或控制器方法上使用`jwt.auth`中间件来验证JWT并自动处理过期时间。例如:
```php
Route::get('/api/user', function () {
// 当前用户必须通过JWT身份验证
})->middleware('jwt.auth');
```
在上面的代码中,如果JWT已过期,`jwt.auth`中间件会自动抛出`TokenExpiredException`异常。
总之,您可以使用`tymondesigns/jwt-auth`包轻松地在Laravel中生成和验证JWT,并使用默认或自定义的过期时间来控制JWT的有效期。
阅读全文