新版 Passport 已经支持修改过期时间了:
https://github.com/laravel/passport/commit...
认真看过
Laravel Passport 文档
的人应该知道,它的 Personal Access Token 是不支持自定义过期时间的,
tokensExpireIn
对此类 token 无效,原文如下:
Personal access tokens are always long-lived. Their lifetime is not modified when using the tokensExpireIn or refreshTokensExpireIn methods.
默认时间为 1 年,但是这可能不满足我们的需求,我们想要改成其它更短的时间怎么办呢?今天尝试了一下,应该算是全网可以找到的最简单方法了,直接在
app/Providers/AppServiceProvider
中添加一句就可以搞定,下面以改为有效期为 1 周的示例来演示:
app/Providers/AppServiceProvider.php
//...
use Laravel\Passport\Bridge\PersonalAccessGrant;
use League\OAuth2\Server\AuthorizationServer;
//...
class AppServiceProvider extends ServiceProvider
* Bootstrap any application services.
public function boot()
$this->app->get(AuthorizationServer::class)
->enableGrantType(new PersonalAccessGrant(), new \DateInterval('P1W'));
//...
//...
关于时间值的写法,请参考:
https://secure.php.net/manual/en/dateinter...
// 设置 PersonalAccessToken 有效期
Passport::personalAccessTokensExpireIn(now()->addMonth(3));
tokensExpireIn()和personalAccessTokensExpireIn()设置过期时间区别是啥?
tokensExpirei是设置oauth_access_tokens表中的token过期时间,也就是用户token的过期时间;
personalAccessTokensExpireIn是设置oauth_personal_access_clients表中的过期时间,但这个过期时间是干嘛的?
@overtrue
我怎么判断我的token过期了,我把
oauth_access_tokens
表的
expires_a
t 字段时间改到现在之前,接口还是可以获取到数据
我只找到了判断token错误的是
if (! $request->expectsJson()) {
return route('login');
laravel passport是通过别的什么判断token失效的吗
@overtrue 超哥去提个PR呗,貌似官方不怎么关心这问题啊,任何带有token的请求都会查两遍数据库。
相关issues 见 https://github.com/laravel/passport/issues... https://github.com/laravel/passport/issues...
还有一个稍微有点关联的 https://github.com/laravel/passport/issues...
每请求一次接口:
[2018-10-29 10:30:25] local.INFO: select * from `oauth_access_tokens` where `id` = 7a81a59200f6e0a74813d757c3ed80236de06841c8ed76840312abe3e8e1f**** limit 1
[2018-10-29 10:30:25] local.INFO: select * from `sys_users` where `id` = 1 limit 1
[2018-10-29 10:30:25] local.INFO: select * from `oauth_access_tokens` where `id` = 7a81a59200f6e0a74813d757c3ed80236de06841c8ed76840312abe3e8e1f**** limit 1
[2018-10-29 10:30:25] local.INFO: select * from `oauth_clients` where `id` = 1 limit 1
@overtrue 问答:Passport OAuth_access_tokens 表查询两次,如何将验证 token 这个步...