Laravel Passport以编程方式创建客户

问题描述

是否可以通过Laravel中的用户界面创建客户端?如果需要允许用户创建和管理自己的客户端,如何在函数上下文中运行“ passport:client”以动态创建客户端?

我尝试制作一个OauthClient模型并实现一个生成客户端的表单,但是在请求中无法识别这样创建的客户端(它们是40个字符的随机字符串)。

解决方法

我强烈建议查看处理命令的 source code(可能还有 this gist

无需创建自己的模型类!您可以使用 Laravel\Passport\ClientRepository 类以编程方式创建新客户端。只需选择以下选项之一:

使用依赖注入

您可以将 ClientRepository 类注入您的控制器/路由功能。例如。在routes/web.php


Route::get('test',function (\Laravel\Passport\ClientRepository $clientRepository) {
    $clientRepository->create(null,'MyTest','https://example.com/auth/callback');
});

使用 app() 助手

实际上也是依赖注入,但可以从代码的任何位置调用,您可以使用 app() 助手:

$clientRepository = app('Laravel\Passport\ClientRepository');
$client = $clientRepository->create(null,'https://example.com/auth/callback');