我试图利用圣所的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);
}
型
5条答案
按热度按时间wz1wpwve1#
我遇到了同样的问题,但我通过添加到标题来解决它:
Accept with value application/json
的。这是我找到的最好的解决方案,也许其他人有其他的解决方案。
的数据
izj3ouym2#
我花了一整天的时间来解决这个问题。在我的例子中,问题出在Apache配置中。我希望这对你有帮助。
字符串
zmeyuzjn3#
我也遇到过类似的问题,得到的响应是
{"message":"Unauthenticated."}
。对我来说,这是因为在我的
.env
文件中,我的APP_URL是https://www.example.com
,我试图通过URLhttps://example.com
访问API。当我将API调用的URL更改为
https://www.example.com
时,它正在工作。y4ekin9u4#
面临着同样的问题。经过一番调查,问题似乎就出在这里:https://github.com/laravel/sanctum/commit/f5695aecc547138c76bc66aaede73ba549dabdc5
在重构过程中,他们忘记了包括默认的保护定义。
只需在config/sanctum.php的末尾添加以下内容即可:
字符串
pdsfdshx5#
由于某些原因,
auth:sanctum
不适用于API身份验证。同样的问题也发生在我身上,然后我在github上看到了这个问题。在这一点上我看到两个解决方案