在我的Laravel网站中,我必须做一个cron作业,该作业将检索一些数据,然后更新我的数据库。 从Laravel的文档中,我想到了Laravel Passport的机器对机器身份验证。
所以我跳进了这个,安装等等。 https://laravel.com/docs/5.6/passport#client-credentials-grant-tokens
我遵循了文档中的每个步骤,并且从我在互联网上找到的示例中,我总是收到以下消息
{
"message": "Unauthenticated."
}
我在Kernel.php中添加了client_credentials中间件
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
...
'authAdmin' => \App\Http\Middleware\AuthAdmin::class,
'client' => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class,
];
然后作为基础知识,我创建了一个ApiTestController,其中包含将为我的路线触发的测试方法。
我将以下行放入api.php路由中:
/*
Public API Routes
*/
Route::group(['prefix' => 'v1'], function() {
...
Route::get('/test', 'ApiTestController@test')->middleware('client');
});
基本上我的方法只是返回“有效”。
我已经通过passport:client
工匠命令创建了一个护照客户端,然后通过邮递员使用它来获取我的Bearer令牌。
但是它不起作用:(
有人可以帮助我吗?
答案 0 :(得分:1)
我知道这个回复很晚,但是我在Passport 5.7中也遇到了同样的问题。
要解决此问题,我必须将以下代码添加到.htaccess中。这是因为我在邮递员中使用https而不是http进行测试,但是http会返回未经身份验证的信息。
添加代码后,您应该能够使用邮递员中的http网址测试您的http api。
也许可以帮助某人。
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]