Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 添加'后未找到路由;auth:api';中间件Laravel 5.3_Php_Laravel 5_Oauth 2.0 - Fatal编程技术网

Php 添加'后未找到路由;auth:api';中间件Laravel 5.3

Php 添加'后未找到路由;auth:api';中间件Laravel 5.3,php,laravel-5,oauth-2.0,Php,Laravel 5,Oauth 2.0,我正在尝试使用Laravel5.3中新的oauth2特性从一个laravel项目调用另一个项目 我的新laravel项目的api.php路由文件中有这个路由,我想从旧项目调用它: Route::get('/hello', function() { return 'hello'; })->middleware('auth:api'); 没有中间件,我可以毫无问题地调用它,有了中间件,它会抛出404NotFound错误 下面是检索访问令牌然后进行api调用的代码: $http = n

我正在尝试使用Laravel5.3中新的oauth2特性从一个laravel项目调用另一个项目

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

Route::get('/hello', function() {
    return 'hello';
})->middleware('auth:api');
没有中间件,我可以毫无问题地调用它,有了中间件,它会抛出404NotFound错误

下面是检索访问令牌然后进行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...)
[2016-10-14 09:46:14]local.ERROR:exception'GuzzleHttp\exception\ClientException'和消息'Client ERROR:'GET'http://my-oauth-project.com/api/hello`导致“404未找到”响应:

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

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

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

protected $routeMiddleware = [
    'client_credentials' => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class,
];
然后将此中间件添加到路由的末尾:

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

这对我来说很有用。

我无法想象文档所说的中间件会因为文档所涵盖的内容(客户信誉和密码授权)而崩溃。不管怎样,谢谢你找到这个!