로그인 기능 구현

Codren·2021년 5월 1일
5

Django 기초

목록 보기
9/15

Section 1. 쿠키와 세션

1. 쿠키(Cookies)

  • 사용자가 웹사이트에 방문할 때 사용자의 컴퓨터(브라우저)에 설치되는 작은 기록 정보 파일
  • 사용자가 서버에 부가적인 요청이 있는 경우 서버는 사용자의 cookie를 확인하여 사용자 식별
  • 브라우저에 저장된 쿠키에 사용자의 민감한 정보가 있을 경우 위험 ↑

        ① 클라이언트가 웹사이트로 요청을 보냄
        ② 서버는 클라이언트가 쿠키가 없는 것을 확인하고 쿠키 생성
        ③ 요청 응답과 함께 key : value 쌍의 쿠키 파일을 클라이언트에게 전송
        ④ 클라이언트는 쿠키 정보를 자신의 브라우저에 저장
        ⑤ 클라이언트가 부가적인 요청을 보낼 때 자신의 쿠키 정보 또한 보냄
        ⑥ 서버는 해당 요청의 쿠키 정보를 분석해 사용자 식별



2. 세션(Session)

  • 사용자의 민감한 상태 정보는 쿠키를 기반으로 서버에 저장하는 방식
  • 사용자를 식별 할 수 있는 SessionID를 생성하여 SessionID에 해당하는 상태 정보를 저장


    ① 클라이언트가 웹사이트로 요청을 보냄
    ② 서버는 클라이언트의 cookie 파일 중 SessionID가 없는 것을 확인
    ③ 해당 클라이언트 고유의 SessionID를 발급하고 상태 정보를 서버 측에 저장
    ④ 요청 응답과 함께 SessionID가 담긴 쿠키 파일을 클라이언트에게 전송
    ⑤ 클라이언트가 부가적인 요청을 보낼 때 자신의 SessionID가 담긴 쿠키 파일 또한 보냄
    ⑥ 서버는 해당 요청의 쿠키 파일 내에 있는 SessionID를 이용해 사용자 식별


이미지 출처



Section 2. 로그인 기능

1. Login Template 생성

  • login.html 생성
  • 회원가입 Form을 복사해서 아이디 비밀번호란만 표시
  • 회원가입 Form 참조



2. View 생성

user = User.objects.get(username=username)	# User 테이블에서 조건에 맞는 행 추출
check_password(password, user.password)		# 입력받은 password와 DB내에 있는 password 비교
request.session['user'] = user.id 		# 해당 클라이언트 Session 객체 생성 후 상태정보 저장
return redirect('/')				# 홈페이지로 이동



3. 로그인 Session 유지

user_id = request.session.get('user')	# 요청을 보낸 클라이언트의 세션에서 'user' 상태정보 추출
if user_id:				# login을 성공해야만 session에 'user' 값이 존재




4. URL 파싱



5. 로그인 결과 화면

  • user12345 계정으로 로그인 성공 시 main 홈페이지로 redirect 후 세션의 상태정보 값 출력



Section 3. 로그아웃 기능 추가

1. View 생성

  • 요청을 보낸 사용자의 session에서 login해야만 얻을 수 있는 'user' 값을 제거



2. URL 파싱



3. 로그아웃 결과 화면

0개의 댓글