Laravel Sanctum Token API验证在Postman中不起作用

d7v8vwbk  于 2023-08-08  发布在  Postman
关注(0)|答案(5)|浏览(224)

我试图利用圣所的API只应用程序。我不是用它来做SPA的。我有一个单一的端点设置和保护的圣殿中间件。我正在创建一个用户,并通过tinker cli工具为该用户创建一个令牌。然后,我将令牌粘贴到Postman中的授权选项卡中的bearer令牌选择下。但是,当我提交请求时,我得到一个未经身份验证的错误。我不确定我在这里做错了什么。非常密切地关注所提供的文档以及我能找到的稀疏视频。下面是一些代码片段。我很欣赏你的洞察力。
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);
    }

wz1wpwve

wz1wpwve1#

我遇到了同样的问题,但我通过添加到标题来解决它:Accept with value application/json的。
这是我找到的最好的解决方案,也许其他人有其他的解决方案。


的数据

izj3ouym

izj3ouym2#

我花了一整天的时间来解决这个问题。在我的例子中,问题出在Apache配置中。我希望这对你有帮助。

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

字符串

zmeyuzjn

zmeyuzjn3#

我也遇到过类似的问题,得到的响应是{"message":"Unauthenticated."}
对我来说,这是因为在我的.env文件中,我的APP_URL是https://www.example.com,我试图通过URL https://example.com访问API。
当我将API调用的URL更改为https://www.example.com时,它正在工作。

y4ekin9u

y4ekin9u4#

面临着同样的问题。经过一番调查,问题似乎就出在这里:https://github.com/laravel/sanctum/commit/f5695aecc547138c76bc66aaede73ba549dabdc5
在重构过程中,他们忘记了包括默认的保护定义。
只需在config/sanctum.php的末尾添加以下内容即可:

'guard' =>  'api'

字符串

pdsfdshx

pdsfdshx5#

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

  1. jwt-auth
  2. API Authentication

相关问题