【发布时间】:2018-01-05 02:10:59
【问题描述】:
看了几十个答案,我还是找不到解决他的问题的办法。
问题
每次我发出一个经过身份验证的请求,响应都是{"error":"Unauthenticated."}
路线
这是我一直在测试的路线。
use Illuminate\Http\Request;
use Laravel\Passport\Http\Middleware\CheckClientCredentials;
Route::get('/test', function () {
return 'Hello World';
})->middleware('auth:api');
Route::middleware('auth:api')->get('/test2', function (Request $request) {
return 'Hello World';
});
设置
我按照教程的指示设置了这个项目,并使用PHP artisan 命令来构建我的数据库。然后我开始用 Postman 测试一下。
使用grant_type: password、客户端凭据和用户凭据获取令牌。然后授予"Bearer " . $token 类型。
我所做的和测试的
我检查了 .htaccess、令牌到期日期、命名空间和其他常见错误。我设置了一个测试功能来检查我的标题信息。结果发布在下面。由于某种原因,问题仍然存在。也没有任何实际错误...没有 error.log 更新,只是来自 API 的响应,让我知道用户未通过身份验证。
array:12 [
"cookie" => array:1 [
0 => "XSRF-TOKEN=eyJpdiI6IkwrNGxLOGVtc1M1Y2lYeUMraldTK3c9PSIsInZhbHVlIjoibHRzdVo3bFVJOFhuMDJvZ3RoNEYxK1NsdmhRenZkbmp5b2xuYXVzWTdIUGJ2WGFUbXBiK1JFQ0VNSVlNbjdIbHVmcndmKzBaMzVJbGkxelZFdllhM0E9PSIsIm1hYyI6ImZhMDJjZDIwNDgxMTRkMDdjYTBkYmMwODc4YzQ4ZmM3OGFkZTI3NzY1ZDA5NTAyODhkYjRlNTY1OGUyMTYyNGEifQ%3D%3D; laravel_session=eyJpdiI6Im5hTnVLS3cyc1BzQldudkN2bFNcLzZRPT0iLCJ2YWx1ZSI6IjIwXC8yRkM3Sk4rWkg0ZFFlaG9RYVErc2ZJT0taSHoxOTU3UVpxejdPZ2MzcHBSc2FCd1NweEZwU2kzQXUxZ1VCVmY1dzZIZldFb2J5QXkwMFwvZmpId1E9PSIsIm1hYyI6ImQxZDIzOGQ0NzllOTg4NmZmZDk2NGI1NDNhMzcwNmI1MWE2MzY0YWIzZTgxZjYzOTAxYjhlMWQ1ZTExNzBiMTEifQ%3D%3D"
]
"accept-language" => array:1 [
0 => "en-US,en;q=0.8,fr;q=0.6"
]
"accept-encoding" => array:1 [
0 => "gzip, deflate, sdch"
]
"postman-token" => array:1 [
0 => "864e4343-e8f1-2efd-1a75-11660313ba3d"
]
"authorization" => array:1 [
0 => "Bearer 0dea6edd3f655463c4e19cf26ef10755bcfbff5dcdbe44cd44c1d7a84c250c359c65f064737752e6"
]
"cache-control" => array:1 [
0 => "no-cache"
]
"accept" => array:1 [
0 => "application/json"
]
"connection" => array:1 [
0 => "close"
]
"x-http-proto" => array:1 [
0 => "HTTP/1.1"
]
]
怀疑
在这一点上,我想我一定是使用了一些错误的工具。我希望这是一个简单的错误,但我完全不知道它可能是什么。
(编辑 1)范围问题:嘿,这可能是令牌的 scope 的问题吗?
(编辑 2)SQL 错误 我设法找到了一个可以解决的错误。不过这有点奇怪。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'api_token' in 'where clause' (SQL: select * from `users` where `api_token` = {AccessToken} limit 1)
【问题讨论】:
-
您是否在 Postman 的请求标头中发送字段“授权:承载 {access_token}”?
-
@louisfischer - 是的,这是一个
GET请求。另外,我的问题中发布的数组是返回的标头值。 -
同样的问题,我已从 5.1 升级到 5.3,但无法进行护照身份验证。我已经完成了 oauth/authorize 和 oauth/token 查询,但似乎 CheckClientCredentials 无法记录用户。尝试获取更多信息
-
在哪里可以找到解决方案?
-
是的,但问题是我不知道如何正确使用这个工具。我会继续发布问题。
标签: php authentication laravel-5 oauth-2.0 laravel-passport