Laravel Passport“auth:api”中间件充当“web,auth”中间件
我已经为Laravel 5.3设置了Laravel Passport包,正如官方文档(https://laravel.com/docs/5.3/passport#introduction)中所述。Laravel Passport“auth:api”中间件充当“web,auth”中间件
我希望API可以被移动应用程序使用,所以我试图实现密码授权令牌。我创建了一个密码授予客户端,并且令牌请求过程......
$response = $http->post('http://my-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => '[email protected]',
'password' => 'my-password',
'scope' => '',
],
]);
...只是正常工作,恢复为我的用户之一的访问令牌和刷新令牌 。
,一方面,
php artisan route:list
列出了API /用户URI正确中间件:API,身份验证:API
,司机API后卫正确设置为在配置护照 /auth.php。总结,安装过程的每一步都已完成(https://laravel.com/docs/5.3/passport#installation)。
默认api.php的内容:
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:api');
问题是当我访问http://my-app.com/api/user,因为它似乎是验证使用“网络”的中间件,而不是“API”的请求...... 当我访问,我被重定向到/登录(登录表单),如果用户没有登录,并且/ home,如果它是...
任何帮助将非常感激。 在此先感谢。
解决!只是为了记录,解决方案:
我发送请求到http://my-app.com/api/user与HTTP头错误。我会发送:
Type: Authorization - Content: Bearer: $accessToken
...和正确的方法是:
Type: Authorization - Content: Bearer $accessToken (without colon)
我从来没有想过这可能是一个错字......总之,错误是不容易察觉,因为重定向登录表单从一开始就误导了我。我相信这确实是一种奇怪的行为...
我知道这是一个旧的帖子,但在这里值得一提的是,通过添加Authorization仍然无法正常工作,您还需要在头文件中添加一个Accept:“application/json”。这是最新版本的Laravel 5.5 –
你是否按照[这里](https://laravel.com/docs/5.3/passport#consuming-your-api-with-javascript)的指示如使用X-CSRF-TOKEN来利用您自己的API端点? – dargue3
@ dargue3。是的,我还在\ Kernel.php中包含了\ Laravel \ Passport \ Http \ Middleware \ CreateFreshApiToken :: class,没有任何改变。但是我真的不想使用JavaScript来使用我自己的API。它是关于从外部移动应用程序中使用它的,为此我需要密码授权类型的方法...我仍然有问题。任何其他想法? – andcl