在查看了几十个答案后,我仍无法找到解决问题的方法。
每次我发出经过身份验证的请求时,回复都是{"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)
答案 0 :(得分:0)
我的程序实际上遇到了一些问题,但即使解决了这些问题,我仍然会遇到错误。
我的数据库未正确设置
我的"运营顺序"被关。我一直在请求令牌并以错误的顺序设置客户。我认为我的客户是用户,这是不正确的,也是我的许多问题的根源。
我一般误用了这个工具。我从未真正尝试登录用户帐户,只登录客户端帐户。当然,这没有任何意义,这也是我失败的原因。
所以我的解决方案是完全停止使用Passport。
如果我仍然需要护照工作怎么办?
由于我的解决方案并不要求我让护照工作,所以我只能帮助你。当我终于弄明白如何进行身份验证时,我意识到我并不需要它......
如果我不需要护照工作怎么办?
如果你和我在同一条船上,并且最好停止使用Passport,那么我建议在Laravel内部使用基本的auth。这很容易设置,并且不需要花很长时间才能学习。