假设我有以下 Next.js api 路由。
/api/protected-api
这个 api 将获得一个 authorization: "Bearer: TOKEN"
标头用于授权目的。
import { NextApiHandler } from "next";
const apiHandler: NextApiHandler = async (req,res) => {
await runAuthMiddleware(req,res);
// THE REST OF THE API LOGIC SHOULD ONLY RUN IF AUTHORIZATION SUCCEEDS
// IN THEORY,runAuthMiddleware WOULD RESPOND WITH 403 IF AUTHORIZATION FAILS
return res.json(data);
};
上面代码的意思是:
- 如果授权失败,我想从
403
函数中响应runAuthMiddleware
,甚至不去运行apiHandler
中的其余代码。
这甚至可能吗?这是一种反模式吗?
我应该用这样的东西代替吗?
const apiHandler: NextApiHandler = async (req,res) => {
const authSuccess = await runAuthMiddleware(req,res);
if (authSuccess)
return res.json(data);
else
return res.status(403).send("Forbidden");
};
更新:
似乎没有简单的方法可以做到。该软件包提供了一种可能的解决方案:next-api-middleware