더북(TheBook)

connect-redis 패키지로부터 RedisStore 객체를 require합니다. 이때 session을 인수로 넣어서 호출하는 것을 잊지 마세요. connect-redis는 express-session에 의존성이 있습니다.

redis 패키지의 createClient 메서드로 redisClient 객체를 생성합니다. 이때 urlpassword 속성에 접속 정보를 입력합니다. 여기서 dotenv.config()보다 코드가 아래에 있어야 한다는 점에 주의하세요. .env 파일에 적힌 process.env 객체의 값들은 dotenv.config() 이후에 생성됩니다.

express-session 미들웨어에는 store 옵션을 추가합니다. 기본적으로는 메모리에 세션을 저장하지만, 이제는 RedisStore에 저장합니다. RedisStore의 옵션으로 client 속성에 redisClient 객체를 연결하면 됩니다.

이제 세션 정보가 메모리 대신 레디스에 저장됩니다. 따라서 로그인 후 서버를 껐다 켜도 로그인이 유지됩니다. 실제 서비스에서 서버 업데이트 시 로그인이 풀리는 현상을 막을 수 있습니다.

Note ≣ express-rate-limit

10장에서 사용하는 express-rate-limit 패키지도 사용량을 메모리에 기록하므로 서버를 재시작하면 사용량이 초기화됩니다. 따라서 이것도 레디스에 기록하는 것이 좋습니다. rate-limit-redis라는 패키지와 express-rate-limit 패키지를 같이 사용하면 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.