動的APIによるログアウト
1813 ワード
next.jsの動的API機能について知りました!
完璧なログイン実装ではないが,Cookieを簡単に利用してログインとログアウトを実現した.
まず、apiフォルダのログインとログアウト、ログインの有無を判断するための3つのapiファイルを以下の画像に作成しました.
次のコードは、POST要求をログインAPIに送信する.
有効期限3600秒(1時間)、名前a name、key=MikeのCookieをヘッダーに保存
抹消手続きをした
完璧なログイン実装ではないが,Cookieを簡単に利用してログインとログアウトを実現した.
まず、apiフォルダのログインとログアウト、ログインの有無を判断するための3つのapiファイルを以下の画像に作成しました.
次のコードは、POST要求をログインAPIに送信する.
有効期限3600秒(1時間)、名前a name、key=MikeのCookieをヘッダーに保存
export default (req, res) => {
if (req.method === "POST") {
res.setHeader("Set-Cookie", "a_name=Mike;Max-Age=3600;HttpOnly,Secure");
// setHeader의 헤더에 이름 a_name, 값은 Mike, 3600초 만료일을 가진 쿠키 생성
res.statusCode = 200;
res.json({ message: "ok" });
}
};
そしてログインボタンに入れる関数を次のようにすればいいのです. const login = () => {
Axios.post("/api/login").then((res) => {
if (res.status === 200) {
// 로그인성공
router.push("admin");
} else {
// 로그인 실패
window.alert("로그인 실패");
}
});
};
そしてisLoginjsログインのユーザー情報を保存export default (req, res) => {
res.statusCode == 200;
res.json({ name: req.cookies.a_name });
};코드를 입력하세요
isLoginの状態でログインするかどうかを判断 axios.get("/api/isLogin").then((res) => {
if (res.status === 200 && res.data.name) {
//로그인처리
setIsLogin(true);
} else {
// 로그인 안됨
router.push("/login");
}
});
};
ログアウトは、Cookieの有効期限を簡単に0に変更することもできます.抹消手続きをした
export default (req, res) => {
res.setHeader("Set-Cookie", "a_name=HMK;Max-Age=0;HttpOnly,Secure");
// setHeader의 쿠키 토큰 시간은 0으로 지정해서 로그아웃!
res.statusCode = 200;
res.json({ message: "ok" });
};
Reference
この問題について(動的APIによるログアウト), 我々は、より多くの情報をここで見つけました https://velog.io/@dbfudgudals/다이나믹-APIテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol