为什么在尝试通过邮递员通过 "api/login" 获取访问令牌时使用护照 returns "Unauthenticated"?
Why passport returns "Unauthenticated" when trying to get access token via "api/login" through postman?
所以,我已经在这个问题上苦苦思索了一个小时。它在我的旧 PC 上工作,但从 git 中取出后,它停止工作了。
下面是我的api.php:
Route::post('/login', 'API\UserController@login');
Route::group(['middleware' => 'auth:api'], function(){
// Some other routes are here
});
我正在尝试从 post 人发送 post 请求以获取访问令牌。请求看起来像这样:
POST /api/login HTTP/1.1
Host: localhost:8000
Content-Type: multipart/form-data; boundary=----
WebKitFormBoundary7MA4YWxkTrZu0gW
Accept: application/json
Cache-Control: no-cache
Postman-Token: aa1a5889-5383-60f4-7425-4c8019f7f144
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="email"
admin@somewhere.com
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="password"
123456
------WebKitFormBoundary7MA4YWxkTrZu0gW--
作为回应,我得到:
{
"message": "Unauthenticated."
}
到目前为止我尝试过的:
确定,我在 Laravel 5.6
中正确地遵循了 passport 安装程序
尝试在根目录中创建一个 .htaccess 文件,如下所示:
重写引擎开启
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
我是 运行 使用 "php artisan serve" 的服务器,除了停止并再次 运行 之外不知道如何重新启动服务器。
添加了一行打印护照错误日志
error_log($e->getHint());
它没有在 laravel 日志中打印任何内容(我不太确定它可能会将其日志文件转储到哪里)。
我已经有一段时间没碰 laravel 了,这些问题听起来应该很傻。非常感谢您的帮助。
试试这个
POST /api/login HTTP/1.1
Host: localhost:8000
Accept: application/json
Content-Type: application/json
cache-control: no-cache
Postman-Token: aa1a5889-5383-60f4-7425-4c8019f7f144
{
"email": "admin@somewhere.com",
"password": "123456"
}------WebKitFormBoundary7MA4YWxkTrZu0gW--
问题既不在控制器也不在护照。我最终列出了带有 php artisan 的所有路由,并遍历了带有路由 "api/login" 的所有中间件定义。在我的特殊情况下,"api/login" 路由在 "api" 中间件下。奇怪的是,api 中间件定义在下面列出了 "auth:api"。删除它,一切又开始工作了。至于 api.php 中的其他路由,我已经将它们分组在 "auth:api" 中间件下。
所以,我已经在这个问题上苦苦思索了一个小时。它在我的旧 PC 上工作,但从 git 中取出后,它停止工作了。
下面是我的api.php:
Route::post('/login', 'API\UserController@login');
Route::group(['middleware' => 'auth:api'], function(){
// Some other routes are here
});
我正在尝试从 post 人发送 post 请求以获取访问令牌。请求看起来像这样:
POST /api/login HTTP/1.1
Host: localhost:8000
Content-Type: multipart/form-data; boundary=----
WebKitFormBoundary7MA4YWxkTrZu0gW
Accept: application/json
Cache-Control: no-cache
Postman-Token: aa1a5889-5383-60f4-7425-4c8019f7f144
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="email"
admin@somewhere.com
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="password"
123456
------WebKitFormBoundary7MA4YWxkTrZu0gW--
作为回应,我得到:
{
"message": "Unauthenticated."
}
到目前为止我尝试过的:
确定,我在 Laravel 5.6
中正确地遵循了 passport 安装程序
尝试在根目录中创建一个 .htaccess 文件,如下所示:
重写引擎开启
RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
我是 运行 使用 "php artisan serve" 的服务器,除了停止并再次 运行 之外不知道如何重新启动服务器。
添加了一行打印护照错误日志
error_log($e->getHint());
它没有在 laravel 日志中打印任何内容(我不太确定它可能会将其日志文件转储到哪里)。
我已经有一段时间没碰 laravel 了,这些问题听起来应该很傻。非常感谢您的帮助。
试试这个
POST /api/login HTTP/1.1
Host: localhost:8000
Accept: application/json
Content-Type: application/json
cache-control: no-cache
Postman-Token: aa1a5889-5383-60f4-7425-4c8019f7f144
{
"email": "admin@somewhere.com",
"password": "123456"
}------WebKitFormBoundary7MA4YWxkTrZu0gW--
问题既不在控制器也不在护照。我最终列出了带有 php artisan 的所有路由,并遍历了带有路由 "api/login" 的所有中间件定义。在我的特殊情况下,"api/login" 路由在 "api" 中间件下。奇怪的是,api 中间件定义在下面列出了 "auth:api"。删除它,一切又开始工作了。至于 api.php 中的其他路由,我已经将它们分组在 "auth:api" 中间件下。