【发布时间】:2021-10-07 01:21:46
【问题描述】:
假设我有以下 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);
};
我上面的代码的意思是:
- 如果授权失败,我想从
runAuthMiddleware函数响应403,甚至不用费心运行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
【问题讨论】:
标签: node.js authentication next.js middleware