我假设您要使用机器对机器身份验证(无用户交互)
我建议通读几遍文档以掌握窍门。
我不相信有一种特定的方法来创建一个唯一的客户端凭据客户端,我所做的是创建一个个人客户端,然后在数据库中更改个人客户端的字段personal_access_client
1
=> 0
您可以使用个人客户端选项,如该选项所示--help
Usage:
passport:client [options]
Options:
--personal Create a personal access token client
--password Create a password grant client
--name[=NAME] The name of the client
-h, --help Display this help message
...
php artisan passport:client --personal
输出
Personal access client created successfully.
Client ID: 1
Client Secret: LbjQNxK5SQZ3pPrEBUwbkE8vaRkg8jh25Qh43HYy
您需要使用另一个中间件,而不是默认中间件,因为在使用此方法时没有用户在场
- 在内核中定义客户端凭证别名中间件
- 添加中间件进行路由
- 发送请求
定义 http 内核的客户端凭据中间件
类:\App\Http\Kernel
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'client_credentials' => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class,
//ommited
];
在路由上定义中间件
Route::get('/test', 'ApiTestController@test')->middleware('client_credentials');
类:\App\Http\Controllers\ApiTestController
public function test() {
return response()->json(['data' => 'hey'] );
}
从php artisan route:list
GET|HEAD | api/test | App\Http\Controllers\ApiTestController@test | api,client_credentials |
发送请求
遵循有关客户端凭据授予令牌的文档中的指定请求
我使用Postman是为了简单起见,使用Postman轻松发送测试请求(www.getpostman.com)
将授权设置为 OAuth 2.0,图像:邮差身份验证
将访问令牌 URL、客户端 ID、客户端密码和授权类型设置为“客户端凭据”,图像:Postman OAuth 字段
Postman创建一个令牌并将其附加到URL或Head,在本例中为head。
Accept:application/json
Authorization:Bearer eyJ0eXAiOi...KCjK0
响应:
{
"data": "hey"
}