카테고리 없음

로그인 시간 나오게 하기

SODAsora 2023. 6. 8. 11:17
function getTime() {
  const payload = localStorage.getItem("payload");
  const payload_parse = JSON.parse(payload)
  const tokneLifeTime = document.getElementById("tokneLifeTime")
  if (payload_parse != null) {
    // NumericDate 형식
    // exp 1970년 ~  토큰이 만료되는 초(sec)
    let exp = payload_parse.exp
    // iat 1970년 ~ 토큰 발급 날짜까지의 초(sec)
    let iat = payload_parse.iat

    // NumericDate 형식의 현재 시간(sec) 구하기
    const now = Math.floor(Date.now() / 1000);

    // 토큰의 남은 만료기간 구하기
    const lifeTime = (exp - now) / 60

    // 토큰 유효기간이 지났다면 토큰 정보 삭제
    if (lifeTime < 0) {

      localStorage.removeItem("access")
      localStorage.removeItem("refresh")
      localStorage.removeItem("payload")
      location.reload();
      // 토큰 유효기간이 지나지 않았다면 남은 로그인 시간 출력
    } else {
      const MIN = parseInt(lifeTime)
      const SEC = parseInt(lifeTime % 1 * 60)
      tokneLifeTime.textContent = `로그인 남은 시간 : ${MIN}분 ${SEC}초`
    }
  } else {
    tokneLifeTime.style.display = "none"
  }
}
function init() {
  setInterval(getTime, 1000)
}
init()