信息资讯综合思念体

【Laravel】记 laravel/passport 单独调整每种token的有效期的 Hack操作

最近在为公司设计认证系统,使用laravel当然自动想到使用 laravel/passport 这个包来实现。

不过有一个小问题,就是所有类型的token都只统一使用:

Passport::tokensExpireIn(now()->addSeconds(3600));

这种方式来定义有效期。不过对于机器对机器的Client Token 而言,3600s实在是有些短,通过一下午各种hack不得法...发现了服务提供器已经率先注入了时间,所以直接继承passport包的 PassportServiceProvider 并修改 registerAuthorizationServer 的内容,即可单独设定有效期。

class PassportServiceProvider extends PassportPassportServiceProvider
{
    /**
     * 单独 调整了 client token 的 时间
     *
     * @return void
     */
    protected function registerAuthorizationServer()
    {
        $this->app->singleton(AuthorizationServer::class, function () {
            return tap($this->makeAuthorizationServer(), function ($server) {
                $server->enableGrantType(
                    $this->makeAuthCodeGrant(), Passport::tokensExpireIn()
                );

                $server->enableGrantType(
                    $this->makeRefreshTokenGrant(), Passport::tokensExpireIn()
                );

                $server->enableGrantType(
                    $this->makePasswordGrant(), Passport::tokensExpireIn()
                );

                $server->enableGrantType(
                    new PersonalAccessGrant, new \DateInterval('P1Y')
                );

                $server->enableGrantType(
                    new ClientCredentialsGrant, new \DateInterval('P1D')//手动设定时间 Passport::tokensExpireIn()
                );

                if (Passport::$implicitGrantEnabled) {
                    $server->enableGrantType(
                        $this->makeImplicitGrant(), Passport::tokensExpireIn()
                    );
                }
            });
        });
    }
}


别忘记了在 config/app.php 中重新设定 provider。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«   2018年7月   »
1
2345678
9101112131415
16171819202122
23242526272829
3031
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接
  • RainbowSoft Studio Z-Blog
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-BlogPHP 1.5.1 Zero Theme By 爱墙纸

百度资讯综合思念体对有机生命接触用人形终端界面 那就是
晋ICP备15000230号