gpt4 book ai didi

php - 添加 'auth:api' 中间件 Laravel 5.3 后找不到路由

转载 作者:可可西里 更新时间:2023-10-31 23:16:43 27 4
gpt4 key购买 nike

我正在尝试使用 laravel 5.3 中的新 oauth2 功能从我的一个 laravel 项目到另一个项目进行 api 调用。

我想从旧项目调用的新 laravel 项目的 api.php 路由文件中有这条路由:

Route::get('/hello', function() {
return 'hello';
})->middleware('auth:api');

没有中间件我可以毫无问题地调用它,有了中间件,它会抛出 404 未找到错误。

这是检索访问 token 然后进行 api 调用的代码:

$http = new GuzzleHttp\Client;

$response = $http->post('http://my-oauth-project.com/oauth/token', [
'form_params' => [
'grant_type' => 'client_credentials',
'client_id' => 'client_id',
'client_secret' => 'client_secret',
],
]);
$token = json_decode($response->getBody(), true)['access_token'];

$response = $http->get('http://my-oauth-project.com/api/hello', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$token,
],
]);
return $response->getBody();

返回的错误:

[2016-10-14 09:46:14] local.ERROR: exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: `GET http://my-oauth-project.com/api/hello` resulted in a `404 Not Found` response:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="robots" content="noindex,nofollow (truncated...)

最佳答案

中间件“auth:api”自动将请求重定向到登录页面(在本例中该页面不存在,因此出现 404 错误)。

客户端凭据授予不需要登录。它的文档尚未发布,但中间件 does exist .

要使用它,请在 app\Http\Kernel.php$routeMiddleware 变量下创建一个新的中间件,如下所示:

protected $routeMiddleware = [
'client_credentials' => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class,
];

然后将这个中间件添加到路由的末尾:

Route::get('/hello', function() {
return 'hello';
})->middleware('client_credentials');

这对我有用。

关于php - 添加 'auth:api' 中间件 Laravel 5.3 后找不到路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40040226/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com