Laravel Sanctum令牌API身份验证在邮递员中不起作用

时间:2020-06-03 20:22:47

标签: php laravel authentication laravel-sanctum

我正在尝试将Sanctum用于仅API的应用程序。我没有将其用于SPA。我设置了一个端点,并由Sanctum中间件保护。我正在通过tinker cli工具创建用户和该用户的令牌。然后,将令牌粘贴到授权选项卡中的承载令牌选择下的Postman中。但是,当我提交请求时,出现未验证的错误。不太确定我在这里做错了什么。紧随其后的是提供的文档以及我可以找到的稀疏视频。以下是一些代码片段。我很欣赏这里的见识。

API.php

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

Middleware / 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);
    }

2 个答案:

答案 0 :(得分:1)

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

在重构过程中,他们忘记包含默认的守卫定义。

只需在 config/sanctum.php 的末尾添加这个用于 api 防护:

'guard' =>  'api'

答案 1 :(得分:0)

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

  1. jwt-auth
  2. API Authentication