【发布时间】:2017-03-23 22:20:26
【问题描述】:
我已经按照官方文档 (https://laravel.com/docs/5.3/passport#introduction) 中的描述为 Laravel 5.3 设置了 Laravel Passport 包。
我希望 API 被移动应用程序使用,因此我正在尝试实现 密码授予令牌。我已经创建了一个密码授予客户端,以及令牌请求过程......
$response = $http->post('http://my-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => 'my@email.com',
'password' => 'my-password',
'scope' => '',
],
]);
...按预期工作,为我的一个用户返回 access-token 和 refresh-token。
一方面,
php artisan route:list
列出 api/user URI 的正确中间件:api,auth:api
并且 api 保护的驱动程序在 config/auth.php 中正确设置为 passport。 总结一下,安装过程的每一步都已经做完了(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 时出现问题,因为它似乎是使用“web”中间件而不是“api”来验证请求... 当我访问时,如果用户未登录,我将被重定向到 /login(登录表单),如果用户未登录,我将被重定向到 /home...
任何帮助将不胜感激。 提前致谢。
【问题讨论】:
-
您是否按照 here 的指示使用 X-CSRF-TOKEN 使用您自己的 API 端点?
-
@dargue3。是的,我还在 Kernel.php 中包含了 \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,没有任何改变。但实际上我不想使用 JavaScript 使用我自己的 API。这是关于从外部移动应用程序使用它,为此我需要密码授予类型方法......我仍然有问题。还有其他想法吗?
标签: php laravel oauth-2.0 laravel-passport