我假设您想使用机器对机器身份验证(无用户交互)
我建议您通读几遍文档以掌握其中的窍门。
我不相信有创建唯一客户端凭据客户端的特定方法,我所做的是创建一个个人客户端然后更改数据库中个人客户端的字段personal_access_client1 => 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,图片:Postman authentication
将访问令牌 URL、客户端 ID、客户端密码和授权类型设置为“客户端凭据”,图片:Postman OAuth Fields
Postman 创建一个令牌并将其附加到 URL 或 Header,在本例中为 header
Accept:application/json
Authorization:Bearer eyJ0eXAiOi...KCjK0
回复:
{
"data": "hey"
}