본문 바로가기
python

[python-django] 세션 저장 및 삭제

by 하이바네 2022. 11. 2.
반응형

장고에서 지원해주는 login을 아래와 처럼 import를 해주고 아래와 같은 형태로 작성하여 사용자 로그인에 대한 정보를 크게 신경쓰지 않았었다.

from django.contrib.auth import authenticate, login

def login(request):
  '''
  기타 필요 코드들
  '''
  if(request.method == "POST"):
    form = UserForm(reuqest.POST)
    if form.is_valid():
      username = form.cleaned_data.get('username')
      raw_password = form.cleaned_data.get('password1')
      user = authenticate(username=username, password=raw_password)  # 사용자 인증
      login(request, user)  # 로그인
      return redirect('main:index')
  '''
  기타 코드들
  '''

이번에 social login 관련 작업을 하면서 session을 어쩔 수 없이 사용을 하게 되었는데 특정 로직 동작 중 main으로 넘어갈 경우 입력된 session의 삭제가 필요하였다.

 

세션 등록

세션 등록은 아래와 같이 간단히 request.session안에 담으면 된다.

request.session['social_type'] = social_type
request.session['social_id'] = social_id

 

세션 삭제

session의 삭제 또는 수정을 위해서는 다음과 같은 절차가 필요하다.

 

1. session 삭제가 가능하도록 등록

2. session 삭제 또는 수정

 

try:
    request.session.modified = True #세션 삭제 가능하도록 등록
    del request.session['social_type'] #세션 삭제
    del request.session['social_id'] #세션 삭제
except:
    pass

필자는 아래와 같이 메인에서 삭제 해주도록 추가를 했고 잘 동작하고 있다. 

 

계속 학습하며 개발을 하는 나중에 더 좋은 방법이 떠오르면 로직은 변경 예정....

 

 

728x90

댓글