authentication - Slim 4 - 如果身份验证失败,则具有自定义响应的身份验证中间件
问题描述
希望有人可以提供帮助。我有一个使用 firebase 进行身份验证和 firestore 数据库的反应应用程序。我现在需要一个 sql 数据库,并想使用我的 react 应用程序中获取的 firebase JWT 来授权请求。
我正在使用 slim 4 并将它发送到我将 JWT 从 react 发送到 Slim、读取它、检查它是一个有效的令牌并检查用户是否在我的 sql 数据库中的地步。
我正在苦苦挣扎的地方是添加中间件,如果用户未经授权,它将发送自定义响应。
如果用户为空,这是显示我的意图的中间件。
如果用户为空,则表示 JWT 无效或解码的 JWT 电子邮件和 user_id 不在数据库中。
class AuthMiddleware
{
public function __invoke(Request $request, RequestHandler $handler): Response
{
$user = validateFirebaseJWT($request);
if ($user == null) {
//throw new HttpForbiddenException($request);
//throw new HttpUnauthorizedException($request, 'ERROR_401_API_KEY_MISSING');
$response = new Response();
$response->getBody()->write('Unauthorised Request');
return $response->withStatus(403);
}
return $handler->handle($request);
}
}
$app->add(new AuthMiddleware);
我尝试了几个选项,但所有尝试都会导致未捕获的错误。
Uncaught Error: Cannot instantiate interface Psr\Http\Message\ResponseInterface
Uncaught Slim\Exception\HttpForbiddenException: Forbidden.
Uncaught Slim\Exception\HttpUnauthorizedException:
任何帮助将不胜感激。
谢谢