Laravel Sanctum 令牌 API 身份验证在 Postman 中不起作用
Laravel Sanctum Token API Authentication Not Working in Postman
我正在尝试将 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);
}
出于某种原因 auth:sanctum
不适用于 API 身份验证。我也遇到了同样的问题,然后我在 github 上看到了这个问题。
目前我看到两个解决方案
遇到了同样的问题。经过一番调查,问题似乎发生在那里:
https://github.com/laravel/sanctum/commit/f5695aecc547138c76bc66aaede73ba549dabdc5
在重构过程中,他们忘记包含默认保护定义。
只需在 config/sanctum 的末尾添加即可。php for api guard:
'guard' => 'api'
我遇到了同样的问题,但我通过添加到 headers 解决了它:Accept with value application/json
.
这是我发现的最佳解决方案,也许其他人有其他解决方案。
我遇到了类似的问题,得到了回复 {"message":"Unauthenticated."}
。
对我来说,这是因为在我的 .env
文件中,我的 APP_URL 是 https://www.example.com
并且我试图通过 URL 访问 API https://example.com
.
当我将 API 调用的 URL 更改为 https://www.example.com
时,它正在工作。
我在试图解决这个问题时浪费了一整天的时间。就我而言,问题出在 Apache 配置中。希望对你有帮助。
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
我正在尝试将 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);
}
出于某种原因 auth:sanctum
不适用于 API 身份验证。我也遇到了同样的问题,然后我在 github 上看到了这个问题。
目前我看到两个解决方案
遇到了同样的问题。经过一番调查,问题似乎发生在那里: https://github.com/laravel/sanctum/commit/f5695aecc547138c76bc66aaede73ba549dabdc5
在重构过程中,他们忘记包含默认保护定义。
只需在 config/sanctum 的末尾添加即可。php for api guard:
'guard' => 'api'
我遇到了同样的问题,但我通过添加到 headers 解决了它:Accept with value application/json
.
这是我发现的最佳解决方案,也许其他人有其他解决方案。
我遇到了类似的问题,得到了回复 {"message":"Unauthenticated."}
。
对我来说,这是因为在我的 .env
文件中,我的 APP_URL 是 https://www.example.com
并且我试图通过 URL 访问 API https://example.com
.
当我将 API 调用的 URL 更改为 https://www.example.com
时,它正在工作。
我在试图解决这个问题时浪费了一整天的时间。就我而言,问题出在 Apache 配置中。希望对你有帮助。
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]