【问题标题】:Remove Cookies and Sign out server-side in Next.js在 Next.js 中删除 Cookie 并注销服务器端
【发布时间】:2021-03-17 11:40:03
【问题描述】:

我需要检查是否有令牌,以及令牌是否在 getInitialProps 中过期,然后如果令牌过期,请从浏览器中清除 Cookie 并注销用户。

这是我目前正在做的事情......

const isTokenExpired = (token) => {
    const currentTime = new Date().getTime() / 1000;
    const decodedToken: MetadataObj = jwt_decode(token);
    if (decodedToken.exp < currentTime) {
        return true;
    } else {
        return false;
    }
};

import nextCookie from "next-cookies";
import Cookies from "js-cookie";

MyApp.getInitialProps = async ({ctx}: any) => {
    const { WebsiteToken } = nextCookie(ctx);
    if (WebsiteToken ) {
        if (isTokenExpired(WebsiteToken )) {
            console.log("Token Expired");
            Cookies.remove("WebsiteToken ");
        }    
    }

}

控制台日志有效,但 Cookie 没有从浏览器中删除,我知道这是因为它没有命中客户端,但我该如何从服务器中做到这一点?

【问题讨论】:

    标签: reactjs cookies next.js server-side


    【解决方案1】:

    您可以通过设置标题来清除 cookie:

    ctx.res.setHeader(
      "Set-Cookie", [
      `WebsiteToken=deleted; Max-Age=0`,
      `AnotherCookieName=deleted; Max-Age=0`]
    );
    

    它将cookie值设置为“删除”,但这并不重要,因为Max-Age=0意味着cookie将立即过期,浏览器将删除它。

    【讨论】:

      猜你喜欢
      • 2019-04-30
      • 2012-10-01
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 2020-08-02
      • 2010-09-27
      • 2015-03-12
      • 2022-08-08
      相关资源
      最近更新 更多