Rub*_*uby 6 cookies server-side reactjs next.js
我需要检查 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 ");
}
}
}
Run Code Online (Sandbox Code Playgroud)
控制台日志可以工作,但是 Cookie 没有从浏览器中删除,我知道这是因为它没有到达客户端,但是我如何从服务器上做到这一点?
小智 11
您可以通过设置标头来删除 cookie:
ctx.res.setHeader(
"Set-Cookie", [
`WebsiteToken=deleted; Max-Age=0`,
`AnotherCookieName=deleted; Max-Age=0`]
);
Run Code Online (Sandbox Code Playgroud)
它将把 cookie 值设置为“删除”,但这并不重要,因为Max-Age=0这意味着 cookie 将立即过期,浏览器将删除它。
| 归档时间: |
|
| 查看次数: |
13515 次 |
| 最近记录: |