gpt4 book ai didi

php - 总是得到 "message": "Unauthenticated." - Laravel Passport

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:22 32 4
gpt4 key购买 nike

这一整天我找到了很多教程。我的设置与那里的所有基本教程完全相同。

目前,我能够访问 http://localhost/oauth/token 并成功返回 token 给我。

之后,我使用 ARC(高级 Rest 客户端)来测试调用我自己的 api。

我已经通过了标题,例如

Authorization: Bearer the_token_here
accept: application/json

从那个 header ,我只想访问 laravel /user 提供的默认 API。

但是,我总是收到 { "message": "Unauthenticated."的响应。 }

引用本教程https://itsolutionstuff.com/post/laravel-5-how-to-create-api-authentication-using-passport-example.html

我可以按照教程进行登录,但无法通过端点详细信息 获取数据。它返回 { "message": "Unauthenticated."的响应。 }

我的api.php的路由

Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function(){
Route::get('/user', function( Request $request ){
return $request->user();
});
});

顺便说一下,laravel.log 中没有错误消息,我已设置为 Debug模式

更新感谢 Mayank 的评论指出

League\\OAuth2\\Server\\Exception\\OAuthServerException: The resource owner or authorization server denied the request. in /.../vendor/league/oauth2-server/src/Exception/OAuthServerException.php:173
Stack trace:
#0 /.../vendor/league/oauth2-server/src/AuthorizationValidators/BearerTokenValidator.php(59): League\\OAuth2\\Server\\Exception\\OAuthServerException::accessDenied('Missing "Author...')
#1 /.../vendor/league/oauth2-server/src/ResourceServer.php(82): League\\OAuth2\\Server\\AuthorizationValidators\\BearerTokenValidator->validateAuthorization(Object(Zend\\Diactoros\\ServerRequest))
#2 /.../vendor/laravel/passport/src/Http/Middleware/CheckClientCredentials.php(46): League\\OAuth2\\Server\\ResourceServer->validateAuthenticatedRequest(Object(Zend\\Diactoros\\ServerRequest))

最佳答案

为了获得原因的详细错误消息,您需要转到 CheckClientCredentials 类详细信息,如下所示

public function handle($request, Closure $next, ...$scopes)
{
$psr = (new DiactorosFactory)->createRequest($request);

try {
$psr = $this->server->validateAuthenticatedRequest($psr);
} catch (OAuthServerException $e) {
error_log($e->getHint()); // add this line to know the actual error
throw new AuthenticationException;
}

$this->validateScopes($psr, $scopes);

return $next($request);
}

基于错误信息。在我的问题中。

解决方案是将其添加到根文件夹的 .htaccess(不仅在公用文件夹内)

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

官方文档中也有说明refer here

如果没有上述配置,Authorization header 将在从任何地方调用应用程序时被忽略。一旦被忽略,内部类将无法检索此 header 数据

关于php - 总是得到 "message": "Unauthenticated." - Laravel Passport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49445559/

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