Study/Django

[Django] 장고 유저 기능 구현하기 #7 (로그인 기억하기)

SoShin_ 2021. 12. 17. 23:07
반응형

2021.12.17 - [Study/Django] - [Django] 장고 유저 기능 구현하기 #6 (이메일로 로그인 하기 기능 구현)

 

[Django] 장고 유저 기능 구현하기 #6 (이메일로 로그인 하기 기능 구현)

2021.12.15 - [Study/Django] - [Django] 장고 유저 기능 구현하기 #5 ( 페이지에서 로그인 로그아웃 구현) [Django] 장고 유저 기능 구현하기 #5 ( 페이지에서 로그인 로그아웃 구현) 2021.12.15 - [Study/Django..

programmers-sosin.tistory.com


이번 게시글에서는 로그인이 이뤄지는 과정과 로그인의 상태가 어떻게 유지되는지에 대해 작성해보겠습니다.

로그인이 이뤄지는 과정은 아래와 같습니다.

 

1. 유저가 아이디와 비밀번호를 작성하고 로그인을 클릭합니다.

2. 서버는 그 기록을 받아 아이디와 비밀번호가 일치하는지를 확인합니다.

3. 일치할 시 유저에 대한 세션을 생성합니다.

4. 생성된 세션을 Login Response를 줄 때 포함해서 클라이언트에게 전송합니다.

5. 그러면 브라우저는 Session을 Cookie에 저장합니다.

5. 그 후 브라우저는 이 사이트에서 Requests를 보낼 때마다 Cookie도 같이 전송합니다.

6. 서버는 그 Cookie의 Session을 확인하여 일치하는 유저를 확인합니다.

세션이란?
세션을 주고받는 과정

그리고 만약 로그아웃을 하거나, 쿠키의 유효시간이 되면 브라우저의 쿠키는 삭제됩니다.


로그인 기억하기 ( 유지시키기)

유저가 웹페이지를 닫아도 로그인을 유지시키기 위해서는 ACCOUNT_SESSION_REMEMBER 를 사용하면 됩니다.

기본 값은 유저에게 물어보는 것으로 만약 True로 설정할 시 웹페이지를 닫아도 로그인을 유지시킬 수 있습니다.

 

또한 SESSION_COOKIE_AGE를 사용하면 cookie가 저장되는 유효시간을 직접 지정해줄 수 있습니다.

defualt 값은 14일로, int형태로 숫자를 입력해주는데 숫자는 초로 입력됩니다.

 

# settings.py

ACCOUNT_SESSION_REMEMBER = True  # 브라우저를 닫아도 세션기록 유지! [ 로그인 안풀리게 ! ]
SESSION_COOKIE_AGE = 3600  # 쿠키를 한시간만 저장 [ 세션 ]

이때 주의해야할점은 사용자가 직접 로그아웃 버튼을 클릭해 로그아웃을 할 경우에는 서버에 저장된 Session도 삭제되지만 유효시간이 만료된 cookie의 경우에는 서버에 Session이 그대로 남아있습니다.

이렇게 많은 양의 Seesion 정보가 서버에 남을 경우에는 메모리도 많이 차지하고 성능에도 영향을 끼칠 수 있습니다.

 이럴경우엔 직접 서버에 저장된 Session 정보를 지워주는 것이 좋습니다.

장고에선 이걸 python manage.py clearsessions 명령어로 Session을 지울 수 있습니다.

이를 자동화 하여 사용하거나, 수동적으로 실행해주면 됩니다.

반응형