gpt4 book ai didi

php - Laravel Passport "auth:api"中间件充当 "web, auth"中间件

转载 作者:可可西里 更新时间:2023-11-01 00:08:20 24 4
gpt4 key购买 nike

我已经按照官方文档 (https://laravel.com/docs/5.3/passport#introduction) 中的描述为 Laravel 5.3 设置了 Laravel Passport 包。

我希望移动应用程序使用该 API,因此我尝试实现密码授予 token 。我已经创建了一个密码授予客户端,并且 token 请求过程...

$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 guard 的驱动程序在 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...

任何帮助将不胜感激。提前致谢。

最佳答案

解决了!仅作记录,解决方案:

我正在将请求发送到 http://my-app.com/api/user HTTP header 错误。我正在发送:

Type: Authorization - Content: Bearer: $accessToken 

...正确的方法是:

Type: Authorization - Content: Bearer $accessToken (without colon)

我从没想过这可能是一个打字错误......无论如何,这个错误并不容易检测,因为从一开始重定向到登录表单就误导了我。我相信这确实是一种奇怪的行为......

关于php - Laravel Passport "auth:api"中间件充当 "web, auth"中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40518278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com