[javascript] Draft.js에서 텍스트 에디터의 자동 로그아웃 기능 추가하기
지금은 웹 애플리케이션에서 텍스트 편집기를 자주 사용하는데, 대표적으로 Facebook에서 개발한 Draft.js가 많이 사용됩니다. Draft.js는 리액트에서 텍스트 편집기를 구현할 때 유용한 라이브러리입니다.
그런데, 텍스트 편집기와 같은 웹 애플리케이션은 보안 문제로 인해 일정 시간 동안 사용자가 비활성화되면 자동으로 로그아웃되게 하는 것이 좋습니다. 이러한 자동 로그아웃 기능을 텍스트 편집기에 추가하는 방법을 살펴보겠습니다.
- Session Timeout 설정하기 먼저, 텍스트 편집기 내에서 사용자의 비활성 시간을 추적하기 위해 세션 타임아웃 값을 설정해야 합니다. 이 값을 설정하기 위해 다음과 같이 코드를 작성합니다.
const SESSION_TIMEOUT = 300000; // 5분
let sessionTimer;
function startSessionTimer() {
sessionTimer = setTimeout(logout, SESSION_TIMEOUT);
}
function resetSessionTimer() {
clearTimeout(sessionTimer);
startSessionTimer();
}
function logout() {
// 로그아웃 로직 실행
// 예: API를 통해 로그아웃 요청 보내기
}
위 코드에서 SESSION_TIMEOUT
변수는 세션 타임아웃 값을 설정합니다. 현재는 5분으로 설정되어 있습니다. startSessionTimer
함수는 사용자의 비활성 시간을 추적하고, resetSessionTimer
함수는 타이머를 재설정합니다. logout
함수는 로그아웃 로직을 처리하는 함수입니다. 이 함수에서는 예를 들어 API를 통해 로그아웃 요청을 보낼 수 있습니다.
- 사용자 동작 감지하기
다음으로, 사용자의 동작을 감지하여 세션 타이머를 재설정해야 합니다. 사용자의 동작은 텍스트 편집기에서 이루어지는 것이므로 Draft.js의
Editor
컴포넌트의 이벤트를 활용할 수 있습니다. 다음과 같이 코드를 수정합니다.
<Editor
// ...기존 코드...
onFocus={resetSessionTimer}
onKeyPress={resetSessionTimer}
onMouseMove={resetSessionTimer}
/>
위 코드에서 onFocus
, onKeyPress
, onMouseMove
이벤트 핸들러를 추가하여 사용자의 동작을 감지하고 resetSessionTimer
함수를 호출합니다. 이렇게 하면 사용자의 동작이 감지될 때마다 세션 타이머가 재설정됩니다.
- 자동 로그아웃 구현 확인하기
이제 텍스트 편집기에서 일정 시간 동안 아무 동작이 없을 경우 자동으로 로그아웃되는 기능을 확인해 볼 수 있습니다. 텍스트 편집기를 사용하는 동안 일정 시간 동안 아무런 동작을 하지 않으면
logout
함수가 호출되어 로그아웃 처리가 진행될 것입니다.
이렇게 함으로써, Draft.js를 사용한 텍스트 편집기에 자동 로그아웃 기능을 추가할 수 있습니다. 사용자의 비활성 시간을 추적하여 일정 시간이 지난 후 자동으로 로그아웃되도록 하는 것은 보안 및 개인정보 보호 측면에서 매우 중요한 기능입니다.