前言
最近在一个前后端分离项目中需要使用到passport扩展以及多表认证,查阅了不少资料,发现实现的方法都不尽如人意,最终还是在laravel/passport
的issues中找到了相关资料,特此记录一下。
#161
以及#982
这两个issue中,有不少国外的开发者提供的一些解决方案,但改动都比较大,不是特别友好,直到看到这条评论以及下方醒目的Merged
图标,才发现laravel/passport
已经有了重大更新,遂跟进了一下这个PR,发现已经被合并至laravel/passport
v9.0版本中。
也就意味着如果你使用的laravel/passport
版本^9.0
,则可以非常简单的实现多表认证。但你会发现没有相关的文档,即使是官方文档,对这块儿内容也是一笔带过,唯一能看出端倪的是发现,运行php artisan passport:client
命令时可以多增加一个参数:--provider
,重点就是这个参数。
如何使用
正常安装并配置laravel/passport
扩展,注意版本号必须大于等于9.0
生成新的客户端
运行php artisan passport:client --password --name=供应商 --provider=supplier
,注意--provider
参数,执行成功后会输出对应的client_id
和client_secret
,记录下来,稍后使用。
创建模型&数据迁移,并填充数据
模型:
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTok