오프라인 웹 앱 로그인의 기본 개념
오프라인 웹 앱에서 사용자 로그인 기능을 구현하려면 온라인 인증과 로컬 인증을 함께 고려해야 합니다. 핵심은 서버와의 동기화 전략과 로컬 데이터베이스 활용 방식을 올바르게 설계하는 것입니다.
1단계: 온라인 상태에서 서버 인증 처리
사용자가 온라인 상태로 로그인할 때는 먼저 서버에 대한 인증(authentication)을 진행해야 합니다. 서버 인증이 성공하면, 사용자 이름(username)과 해시(hash) 처리된 비밀번호를 데이터베이스에 저장합니다.
여기서 중요한 점은 비밀번호를 평문(plain text)으로 저장하지 말고 반드시 해시 함수를 통해 암호화된 형태로 보관해야 한다는 것입니다. 이는 보안 사고 발생 시에도 실제 비밀번호가 노출되지 않도록 보호하는 필수적인 조치입니다.
2단계: 해시 갱신 전략
데이터베이스에서 해당 계정을 찾은 경우, 새로운 해시를 생성해야 하는지 판단합니다. 다만 이 작업은 사용자가 마지막 로그인 이후 비밀번호를 변경한 경우에만 수행하면 됩니다.
비밀번호가 변경되지 않았다면 기존 해시 값을 그대로 유지하여 불필요한 연산과 데이터 갱신을 줄일 수 있습니다.
3단계: 로컬 데이터베이스 인증
오프라인 환경에서도 로그인이 가능하려면 로컬 데이터베이스(local database)에 대한 인증 절차를 별도로 마련해야 합니다. 즉, 서버에 접속할 수 없는 상황에서도 저장된 계정 정보를 통해 사용자를 검증할 수 있어야 합니다.
필수 선행 조건
오프라인 로그인 기능이 정상적으로 작동하려면 최소 한 번은 온라인 버전의 앱으로 로그인해야 합니다. 이 과정에서 사용자 정보가 로컬 데이터베이스에 캐시(cache)되어, 이후 오프라인 상태에서도 인증이 가능하게 됩니다.
정리
오프라인 웹 앱의 로그인 시스템은 ① 온라인 시 서버 인증 및 해시 저장, ② 비밀번호 변경 시에만 해시 갱신, ③ 로컬 데이터베이스 인증 지원이라는 세 가지 축을 중심으로 설계됩니다. 이러한 흐름을 따르면 네트워크 연결 여부와 관계없이 안전하고 일관된 사용자 인증 경험을 제공할 수 있습니다.