如何在nextjs中的每个请求上检查cookie?

时间:2020-10-19 01:40:08

标签: next.js

我有一个nextjs应用程序,我想检查每个请求以查看cookie中是否保存了JWT。如果没有,我想给他们看一个登录表格。如果确实有,请照常进行。

我想不起来在哪里或怎么做。

我会在pages/_app.js中这样做吗?有某种中间件吗?

希望我已经解释了我想要完成的工作,有人可以指导我完成该操作的位置或方式。

1 个答案:

答案 0 :(得分:0)

如果每个页面都需要令牌,则应在_app.js中进行。 否则,您需要在每个需要授权的页面上进行操作。

您可以使用next-cookies库在服务器端npm i next-cookies

获取cookie

您的get ServerSideProps函数应如下所示:

export const getServerSideProps = async (ctx) => {
  try {
    const cookies = cookies(ctx);
    const { token } = cookies;

    // fetch data here with the token...


    return {
      props: { token },
    };
} catch (err) {
    // either the `token` cookie didn't exist
    // either way: redirect to the login page
    console.log(err);
    ctx.res.writeHead(302, { Location: "/login" });
    ctx.res.end();

    return { props: {} };
  }
};