[Normaltic's 취업반 과제] jwt 로그인 유지

2024. 5. 8. 23:08정보보안 및 해킹/Normaltic's 취업반 과제

아이고....

로그인 구현을 해놓고 쿠키로 보내주질 않아서 로그인 유지를 하질 못하고 있었다..

index.php

맨 앞 부분에서 GET방식으로 login_id를 받아오던 것을 COOKIE를 받아오는 것으로 변경하였다.

물론, 그 쿠키 안에는 JWT가 들어있다.

if (!isset($_COOKIE['jwt'])) {
  header("location: login.php");
  exit;
}

로그아웃

쿠키는 삭제하는 방법이 따로 없기 때문에 만료 시간을 과거로 되돌려주는 수밖에 없는데, 그것이 time() - 3600 이다.

그리고 다시 index.php페이지를 열기 위해서 index.php로 redirect 해준다.

if (isset($_POST["logout"])) {
            setcookie("jwt", "", time() - 3600, '/');
            unset($_COOKIE['jwt']);
            header("location: index.php");
            exit;
          }

jwt_func.php

jwt를 만든 뒤에 쿠키로 만들어 주는 부분이다.

jwt는 쿠키 이름이고, $token은 유저 정보, 뒤에는 만료 기간이다.

$token = $jwt->hashing(array(
    'exp' => time() + (360 * 30), // 만료기간
    'iat' => time(), // 생성일
    'id' => $user_id,
    'email' => $email,
    'password' => $password
));
setcookie('jwt', $token, time() + (86400 * 15), "/");