Nextjs服务器操作-如何获取中间件中的自定义参数集?

w8rqjzmb  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(134)

我让middleware.ts拦截每个请求并对用户进行身份验证,但我想在这些请求中传递来自数据库的数据,其中用户经过身份验证。
我有一个服务器操作,看起来像这样:

export async function getProjectsByUser(): Promise<PrismaProject[]> {
  const user = await getUser()
  const projects = await prisma.project.findMany({
    where: {
      user_id: user.id,
    },
    include: {
      Document: true,
      Conversation: {
        include: {
          Message: true,  
        },
      },
    },
  });

  return projects
}

注意函数的第一行抓住了用户。如果可能的话,我宁愿从中间件获取它,但我不确定如何引用它。是否有最佳做法?

qyuhtwio

qyuhtwio1#

我认为您可以通过将中间件附加到req对象来访问路由控制器中存储在中间件中的数据。中间件可以向req对象添加属性/值,并使其可用于路由控制器。

// middleware.ts
export async function authenticateUser(req, res, next) {
  const user = await getUser(); 
  // mechanism
  req.user = user;
  next();
}

然后从req对象访问user数据。

export async function getProjectsByUser(req: Request, res: Response) {
  const user = req.user;
}

相关问题