我正在尝试使用Laravel护照,但我不知道我是否发现了错误或丢失了某些东西。
登录控制器:
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
因此,我在用户登录时创建令牌。在数据库上,我看到生成的令牌具有expires_at字段:一星期后,它是正确的。 但是,如果我将此值更改为较早的日期,我仍然可以使用此令牌...
Laravel只是忽略了该字段?为什么?
我做了研究,但我有点困惑……很多人说代币不会过期或在一年内过期。但是后来我发现了一些带有此摘要的帖子:
public function boot(){
$this->registerPolicies();
Passport::routes();
Passport::tokensExpireIn(Carbon::now()->addHours(24));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}
我了解tokensExpireIn设置了expires_at字段,而每当用户使用其令牌时,refreshTokensExpireIn用于刷新此字段...
但是,如果Laravel仍然不检查此字段,那就没有用了。
答案 0 :(得分:0)
您还可以设置个人令牌的到期日期
Passport::personalAccessTokensExpireIn(now()->addMonths(1));
您还需要重新生成令牌,因为旧令牌仍具有其到期日期。