gpt4 book ai didi

javascript - 如何在 NextJS 中将 next-iron-session 与自定义 api 路由中间件一起使用?

转载 作者:行者123 更新时间:2023-12-05 04:53:02 29 4
gpt4 key购买 nike

我正在使用 next-iron-session 进行 session 存储,使用 firebase 进行身份验证,每个 api 路由都应该有 auth 中间件和 next-iron-session,这是我第一次使用 NextJS。尝试了几种不同的方法,但都不起作用,这是我所做的:

//auth-middleware.ts

import { NextApiRequest, NextApiResponse } from "next";
import { auth } from "utils/firebase-admin";
import { sessionObject } from "utils/session";
import { withIronSession } from "next-iron-session";

const withAuth = (handler: any) => {
return async (req: NextApiRequest, res: NextApiResponse) => {
const { accessToken } = (<any>req).session.get("user");

await auth.verifyIdToken(accessToken);

return handler(req, res);
};
};

export default withIronSession(withAuth, sessionObject);

//hello.ts (just a simple route)
import { NextApiRequest, NextApiResponse } from "next";
import authMiddleware from "utils/auth-middleware";

const handler = async (req: NextApiRequest, res: NextApiResponse) => {
res.status(200).json({ name: "John Doe" });
};

export default authMiddleware(handler);

我不确定这是不是正确的方法。

有什么帮助吗?

最佳答案

您需要在 withIronSession 函数调用周围添加一个闭包,以将 handler 函数传递给 withAuth

// auth-middleware.ts

export default function authMiddleware(handler: any) {
return withIronSession(withAuth(handler), sessionObject);
};

关于javascript - 如何在 NextJS 中将 next-iron-session 与自定义 api 路由中间件一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66218440/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com