我想显示已验证用户的数据,并在用户未通过验证时生成一个状态代码和一条状态消息。我使用Laravel API和Sanctum,这是我所尝试的:
public function me(Request $request){
$user = $request->user();
if($user)
{
return response()->json([
'status'=>200,
'user'=>$user
]);
} else {
return response()->json([
'status'=>401,
'message'=>'No access'
]);
}
}
问题是,它在通过身份验证时显示状态200,而在未通过身份验证时不显示状态401代码。
{
"message": "Unauthenticated."
}
在认证中还涉及到一个不记名令牌。
2条答案
按热度按时间bjg7j2ky1#
首先,您需要使用$request-〉user()方法检查用户是否通过了身份验证,如果返回null,则意味着用户未通过身份验证,您可以返回相应的响应,其中包含状态代码401和错误消息。
要检查用户是否经过身份验证,可以使用Laravel中的Auth::check()方法,如下所示:
或者,也可以使用$request-〉user()方法,检查它是否返回空值,如下所示:
在这两种情况下,如果用户未通过身份验证,它将返回一个响应,其中包含状态代码401和错误消息“No access”。
unguejic2#
如果你确认令牌已经涉及到Authorization头,也许你需要检查一些这样的步骤:
您需要验证是否已在用户模型中从包Laravel\Sanctum\HasApiTokens添加HasApiTokens。
之后,你可以检查路由器中间件。你可以使用中间件auth:sanctum保护端点。如果你使用中间件能力,也许你也可以检查它。
转到config/cors.php,启用supports_credentials为真。
如果你在使用Frontend应用程序之前尝试过,你有没有在postman上尝试过?