添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
坏坏的凳子  ·  Access Denied·  4 小时前    · 
含蓄的四季豆  ·  Mautic problem with ...·  5 小时前    · 
求醉的胡萝卜  ·  Access Denied·  5 小时前    · 
没读研的毛衣  ·  Access Denied·  12 小时前    · 
高大的卡布奇诺  ·  Social Determinants ...·  昨天    · 
细心的冲锋衣  ·  C# ...·  11 月前    · 
魁梧的硬币  ·  PA46 Stanyl® HFX82S ...·  1 年前    · 

新版 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 这个步...