1

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

API.php

Route::middleware('auth:sanctum')->apiResource('/documents','DocumentHandlerController');

中间件/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
        );
    }
}

我的控制器的功能

    public function index()
    {
        return response()->json(['Success'],Response::HTTP_OK);
    }
4

5 回答 5

3

我遇到了同样的问题,但我通过添加到标题解决了它:Accept with value application/json

这是我发现的最好的解决方案,也许其他人有另一种解决方案。

在此处输入图像描述

于 2021-08-12T12:50:33.497 回答
2

面临同样的问题。经过一番调查,问题似乎发生在那里: https ://github.com/laravel/sanctum/commit/f5695aecc547138c76bc66aaede73ba549dabdc5

在重构期间,他们忘记了包含默认保护定义。

只需在 config/sanctum.php 的末尾添加 api 保护:

'guard' =>  'api'
于 2021-04-12T08:50:25.857 回答
0

由于某种原因 auth:sanctum不适用于 API 身份验证。我也遇到了同样的问题,然后我在github上看到了这个问题。
我现在看到两个解决方案

  1. jwt-身份验证
  2. API 认证
于 2021-04-09T07:33:39.767 回答
0

我在收到回复时遇到了类似的问题{"message":"Unauthenticated."}

对我来说,这是因为在我的.env文件中,我的 APP_URL 是https://www.example.com并且我试图通过 URL 访问 API https://example.com

当我更改对其进行 API 调用的 URL 时,https://www.example.com它正在工作。

于 2021-12-15T21:30:36.687 回答
0

试图解决这个问题时,我整天都在忙。就我而言,问题出在 Apache 配置中。我希望这可以帮助你。

RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
于 2022-02-10T20:13:27.390 回答