Laravel中前后端分离,调用API认证,如何修改 Passport Personal Access Token 过期时间?
1. laravel版本是Laravel6.x,认证方式是Passport
2. 请问Laravel中前后端分离,调用API认证,如何修改 Passport Personal Access Token 过期时间
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//登录2小时后过期
$this->app->get(AuthorizationServer::class)
->enableGrantType(
new PersonalAccessGrant(),
new \DateInterval('PT2H')
);
}
}
$user = Auth::guard('web_audit')->user();
$tokenResult = $user->createToken('Personal Access Token', 'user');
你用的是哪一块的认证呢? 如果是 passport 的话, 用的是 password 方式的, 修改 oauth_access_tokens 表的 expires_at
得看你使用了那种认证方式
不要尝试去变更 Token 的过期时间,这不是一个合理的行为。
正确的处理方式应该是销毁旧的 token,重新签发一个新的 Token。
例如在 Token 过期的半分钟内如果发了请求,就会销毁当前正在使用的 Token,同时签发新的 Token。
如果使用 Token 来做鉴权,建议参照 JWT 中对于 Token 的规范。
正确做法是监听401并用刷新令牌刷新token,如果刷新令牌也失效,那就重新登录,刷新令牌一般比token拥有更长的有效期,可以做到在适当的时间内永不退出
可以通过中间件实现
博客:Laravel Sanctum 如何自定义每个 token 的过期时间 看这个
你这种只能在服务器存token的过期时间,每次请求过来判断有没有过期,不能用jwt自带的过期时间。 核心就是中心化延长过期时间
这种在服务刷新过期时间不是很好吧,并发量大了还是有影响的,前后端分离的还是前端直接在请求时效验是否2小时内有操作没有,超2小时直接发起注销动作,让服务器上的失效,
服务器上效验比较适合前后一体的非token认证。如cookie认证等