WEB front-end/Javascript
날짜 함수 활용...
겸둥이곰
2022. 6. 22. 17:17
반응형
오늘해야 할 일은 로그인 아이디별로 설정한 로그인/로그아웃 시간에 따라
- 로그아웃 설정 시간 30분 전에 사용자에게 미리 알림 주기
- 로그아웃 시간이 되면 로그아웃 시키기
현재 사용중인 프로그램에 자동 로그아웃 기능이 없고 , 다만 로그인 시에 오전 8시 ~ 오후 9시 에만 로그인 가능 하도록 되어 있다.
즉, 로그인을 했다면.. 오후 9시 이후라도.. 로그아웃 하지 않으면 무한 사용 가능한 상황..

이런걸 애려라고 할수는 없으나.. 혹시나 모를 보안 사고 방지를 위해 아이디별로 로그인/로그아웃 시간을 설정을 해 놓고..
30분 전에 미리 알림을 주고.. 시간이 되면 로그아웃이 되게 해 달라는 클라이언트의 요청...
getDate() 함수를 이용하면 날짜를 핸들링 할수 있다는 것은 누구나 알고 있지만...
30분 전을 어떻게 표현하지??
라는 생각을 해 봤다.
평소에 getDate() 함수를 사용할 일이 없으니...
일단..
- 로그아웃 시간을 가져와서
- getDate()로 시간을 생성하고..
- 30분을 빼고..
- 1분마다 시간 비교
우선 new Date(year, month, day, hours, minutes, seconds, milliseconds) 를 사용해서 . . 로그아웃 시간을 만들었다.
const curr_date = new Date(); // 로그아웃 시간을 생성하기 위한 오늘 날짜 생성..
const log_out = "2100"; // 21시면 로그아웃 (실제는 DB에서 가져온 값을 넣어줌)
// 로그아웃 되는 시간 생성
const log_out_time = new Date(curr.getFullYear(), curr.getMonth(), curr.getDate(), log_out.substring(0, 2), log_out.substring(2, 3));
// 30분 전에 알람을 줘야 하므로 로그아웃 시간에서 30분을 뺀다
log_out_time.setMinutes(log_out_time.getMinutes() - 30);
const logout_noti_hours = log_out_time.getHours().toString().padStart(2, "0"); // 로그아웃 시간
const logout_noti_minutes = log_out_time.getMinutes().toString().padStart(2, "0"); // 로그아웃 분
const noti_log_out = String(logout_noti_hours) + String(logout_noti_minutes); // hhmm 형식으로
// 1분마다 로그아웃 시간 확인
setInterval(()=>{
const now_date = new Date(); // 현재 시간 생성
// hhmm 형식으로 변경
const now_time = String(now_date.getHours().toString().padStart(2, "0")) +
String(now_date.getMinutes().toString().padStart(2, "0"));
let isNotice = true; // 알림은 한번만 줄것이므로 이 플래그가 true 인 경우 노티를 주고 값을 false로 변경
// 로그아웃 30분전 && 아직 알림을 하지 안았으면..
if (Number(now_time) >= Number(noti_log_out) && isNotice){
isNotice = false; // 한번만 알림을 주고 다시 주지 않는다.
alert("안녕하세요~\n30분뒤에 로그아웃 될 예정입니다. \n하시던 작업을 마무리 해 주세요~");
}
if (Number(now_time) >= Number(log_out)){ // 로그아웃 시간이 되면 로그아웃
location.href="/logout.do";
}
}, 60000);
시간 형식을 hh24mm 형식으로 쉽게 받을수 있을까?? 하고.. 여러곳을 찾아봤지만..
결국 찾지 못했음 ㅠㅠ

그래도.. 일단 해결은 되었으니.. 만족..
다음에 시간나면 찾아봐야지..
반응형