如何使用 next js & firebase 在 getServerSideProps 中检索会话 cookie

时间:2021-02-19 14:41:42

标签: express next.js

我在 nextjs 项目中使用 firebase 进行身份验证。我正在使用 firebase admin SDK 在不同端口的本地主机上运行的快速后端 API 上生成会话 cookie。

const cookie = await this.createSessionCookie(req.body.token)
    if(cookie) {
      // set cookie expiration
      const expiresIn = 60 * 60 * 24 * 5 * 1000;
      // Set cookie policy for session cookie.
      const cookieOptions = { maxAge: expiresIn, httpOnly: true, secure: true, path: '/'};
      res.cookie('session', cookie, cookieOptions);
      res.end(JSON.stringify(
        {
          "message": "User created successfully",
          "status": "success",
          "data": { result }
        }
      ));
    }

但是我无法在 nextJS 的 getServerSideProps 中检索 cookie。

export async function getServerSideProps(context) {
  const cookies = nookies.get(context)
  if (!cookies.session) {
    context.res.writeHead(302, { Location: '/auth/signin' })
    context.res.end()
  }
  return {
   props: {}
  }
}

我知道这是同源策略的结果,因为下一个应用程序和后端 API 在本地主机上的不同端口上。有没有办法在下一个应用中检索 cookie?

1 个答案:

答案 0 :(得分:0)

原来我需要将 cookie 选项设置为 false,因为我在本地主机上。在此之后,我能够设置 cookie。