我有一个中间件判断用户是否通过firebase登录.如果firebase无法授权用户,它会发送一条带有403状态码的消息.
这是我的代码:
import { NextFunction, Request, Response } from "express";
import firebase from "../config/firebase/index";
async function authMiddleware(req: Request, res: Response, next: NextFunction) {
const headerToken = req.headers.authorization;
if (!headerToken) {
return res.send({ message: "No token provided" }).status(401);
}
if (headerToken && headerToken.split(" ")[0] !== "Bearer") {
res.send({ message: "Invalid token" }).status(401);
}
const token = headerToken.split(" ")[1];
try {
await firebase.auth().verifyIdToken(token);
next();
} catch (error) {
res.send({ message: "Could not authorize" }).status(403);
}
}
export = authMiddleware;
当我向路由发出请求时,会调用这个中间件.我试图发送一个有故障的jwt,得到的回复是message: "Could not authorize"
,但状态代码是200
而不是403
.
当我将返回状态代码更改为401
时,响应将给出正确的401
状态.
我做错了什么?我怎样才能使状态代码为403
?(我试过postman 和chrome)