Php 添加'后未找到路由;auth:api';中间件Laravel 5.3
我正在尝试使用Laravel5.3中新的oauth2特性从一个laravel项目调用另一个项目 我的新laravel项目的api.php路由文件中有这个路由,我想从旧项目调用它: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
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');
这对我来说很有用。我无法想象文档所说的中间件会因为文档所涵盖的内容(客户信誉和密码授权)而崩溃。不管怎样,谢谢你找到这个!