다이나믹 API로 로그인 로그아웃

김형민·2021년 5월 22일
0

next.js의 다이나믹 API 기능에 대해서 잠깐 알아봤다!

완벽한 로그인 구현은 아니지만 간단하게 쿠키를 이용해 로그인과 로그아웃을 구현했다
일단 아래 이미지를 보면 api폴더안에 로그인과 로그아웃 그리고 로그인 여부를 판단할 수 있는 api파일을 3개 만들었는데 각각 살펴보자!

아래 코드를 살펴보면 로그인API에 POST요청을 보내면
헤더에 만료일 3600초(1시간), 이름 a_name, key= Mike인 쿠키를 저장한다

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("로그인 실패");
      }
    });
  };

그리고 isLogin.js에서 로그인한 사용자 정보를 보관한다

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");
      }
    });
  };

로그아웃 또한 간단하게 쿠키의 만료일을 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" });
};
profile
항해 중인 개발자

0개의 댓글