原创

laravel使用passport做接口认证设置过期时间问题

前言

现在的开发当中自然少不了接口的编写,我们需要使用一些验证规则来对我们的接口来进行限制访问,这里面就涉及到了一些接口认证的插件了,上次我在博客中讲了怎么去使用 passport 来做接口的认证,但是上次的博客中似乎没有提到 passporttoken 过期时间问题,其实是我的前端知识较浅,我以为前端不能实时获取我的 token 来放在请求头,所以我就默认原来 passport 的配置(默认过期时间为一年)不修改他的过期时间了,随着这一段时间对前端的知识慢慢了解,知道前端也可以像后端一样定义变量,实时获取了,然后我就去研究了一番这个 passport 所谓的 token 怎么在一定的时间内让他过期了,刚开始我看了 passport 的底层源码,发现他有写 token 的方法,我一想着挺简单啊,东西都写好了,我直接拿出来用不就行了么?

这是 passport 底层封装的 token 过期方法:
file

passport 底层封装的 token 过期时间方法

但是问题来了,我在 AuthServiceProvider.php 里面的 boot 方法中添加了这两个方法,并且传出对应的值,可是还是不生效,这就很头大了,这执行不到咋整,然后我就去找了谷爹、度娘询问究竟,最后在 phphub 上找到了我想要的答案,原来是需要在 AppServiceProvider.php 这个文件中的 boot 方法中去实现设置我们的token 时间,其实具体原理到这我就不太清楚了,我就知道这样写能达到我想要的效果,在 AppServiceProvider.php 中的 boot 方法中加入如下代码:

<?php
use Laravel\Passport\Bridge\PersonalAccessGrant;
use League\OAuth2\Server\AuthorizationServer;

......

public function boot()
{
//设置token过期时间为60秒
        $this->app->get(AuthorizationServer::class)
            ->enableGrantType(new PersonalAccessGrant(), new \DateInterval('PT60S'));
}

如图:
file

AppServiceProvider.php 中设置 token 过期时间

这里的TP60S其实是 PHP 里的 DateInterval 类(点此查看DateInterval类),表示一个时间周期的类,其实我也很纳闷,现在不是有 Carbon 的写法么,为啥要用这么死板的写法,后面想想其实有可能在开发这个功能的时候还没有 Carbon 这个函数呢,到此,passport 设置 token 过期时间就结束了,尽情的使用 postman 去测试吧!

正文到此结束
本文目录