Laravel Sanctum 令牌 API 身份验证在 Postman 中不起作用

Kil*_*ole 2 php authentication laravel laravel-sanctum

我正在尝试将 Sanctum 用于仅 API 应用程序。我不会用它来做 SPA。我有一个由 Sanctum 中间件设置和保护的端点。我正在通过tinker cli 工具创建一个用户和该用户的令牌。然后,我将令牌粘贴到授权选项卡中不记名令牌选择下的 Postman 中。但是,当我提交请求时,我收到未经身份验证的错误。不太确定我在这里做错了什么。非常仔细地遵循了提供的文档以及我能找到的稀疏视频。这是一些代码片段。我很欣赏这里的见解。

API.php

Route::middleware('auth:sanctum')->apiResource('/documents','DocumentHandlerController');
Run Code Online (Sandbox Code Playgroud)

中间件/Authenticate.php

class Authenticate extends Middleware
{
    /**
     * Return 401 when not authorized
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string|null
     */
    public function handle($request)
    {
        return response()->json(
            ['message'=>'Unauthorized']
            ,Response::HTTP_UNAUTHORIZED
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

我的控制器的功能

    public function index()
    {
        return response()->json(['Success'],Response::HTTP_OK);
    }
Run Code Online (Sandbox Code Playgroud)

小智 8

我遇到了同样的问题,但我通过 add to headers: 解决了它Accept with value application/json

这是我发现的最佳解决方案,也许其他人有其他解决方案。

在此输入图像描述


小智 5

为了解决这个问题我花了一整天的时间。就我而言,问题出在 Apache 配置中。我希望这可以帮助你。

RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Run Code Online (Sandbox Code Playgroud)