响应发送 200 而不是 403
Response sending 200 instead of 403
我有一个中间件检查用户是否通过 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
.
当我将 return 状态代码更改为 401
时,响应会给出正确的 401
状态。
我哪里做错了,我怎样才能让状态码变成403
? (我试过邮递员和 chrome)
send()
方法 returns 响应在 status(403)
更新之前默认状态为 200。您必须在发送响应之前使用 status()
来设置状态:
res.status(403).send({ message: "Could not authorize" });
我有一个中间件检查用户是否通过 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
.
当我将 return 状态代码更改为 401
时,响应会给出正确的 401
状态。
我哪里做错了,我怎样才能让状态码变成403
? (我试过邮递员和 chrome)
send()
方法 returns 响应在 status(403)
更新之前默认状态为 200。您必须在发送响应之前使用 status()
来设置状态:
res.status(403).send({ message: "Could not authorize" });