0부터 시작하는 Django 공부 - 사용자 관리

Jaehong Lee·2022년 6월 20일
0
post-thumbnail

0. Django에서 app을 만드는 mvt 패턴

  • A. model, form 생성
  • B. url 설정
  • C. views.py 작성
  • D. 반환할 template 작성

1. 사용자 관리

  • 회원 정보 조회 : 로그인
  • 회원 정보 수정 : 수정
  • 회원 정보 삭제 : 탈퇴
  • 회원 정보 생성 : 회원가입
    • Django에서는 회원가입을 위한 모델과 form을 제공해준다. 따로 작성 불필요. auth에 저장되어 있다
    • 만약 기능 추가시 python의 상속을 사용하면 된다

2. 회원가입 구현

  • 2.1 App 추가

  • 2.2 form을 가져와서 GET 구현

    • Django안에 저장된 회원가입용 form을 가져와 사용한다
  • 2.3 url 추가

  • 2.4 template 추가

  • 2.5 실행

  • 2.6 signup의 저장 구현 (POST)

    • FORM에 DATA를 넣어주면 속성에 맞게 DATA를 맞춰서 저장해준다. 또한 검증이 가능하다
    • is_vaild에 따라 아래 조건을 검사하여 유효한지 검증
    • 회원가입한 Data는 auth_user에 저장
    • password는 암호화되서 저장된다

3. login 구현

  • request : 사용자 요청 정보
  • 3.1 url 추가

  • 3.2 views login get함수 작성

    • login용 form
  • 3.3 login.html template 작성

  • 3.4 views login post함수

    • 원래는 login 함수지만 class명이 login이므로 이름을 변경하여 import
  • 3.5 login 정보 저장

    • loginform에서 user만 가져옴, 이 코드 안에는 사용자 이름을 가지고 그 이름에 해당하는 password를 DB로 부터 가져와 비교하는 기능이 구현되어있다. 따라서 FORM에서 유저정보를 불러와 전달해줘야한다
    • post시에는 AuthenticationForm에 request를 넣어줘야한다
    • login을 한 기록은 저장해놔야지 login 상태가 지속된다. 이는 서버, 클라이언트 어디든 저장할 수 있다. 본 실습에서는 서버에 저장

      1. 클라이언트 컴퓨터 메모리 저장될 경우 token 방식 로그인으로 암호화된 값으로 저장한다
      • 암호화된 값을 클라이언트가 서버에 전송할 때 이를 해독하는 과정이 실행되며 메모리가 소비된다
      1. 서버 컴퓨터 메모리에 저장될 경우 session 방식 로그인으로 저장
      • session 클러스터링 방식 : 서버 컴퓨터는 분산 구조이므로, 로그인이 저장된 컴퓨터가 다른 작업을 해서 다른 컴퓨터가 클라이언트와 연결될 경우, 로그인 정보가 사라져 로그인이 풀릴 수 있다. 이 클러스터링 방식은 모든 컴퓨터에 저장하는 방식인데, 이럴경우 메모리 낭비가 심하므로, session 컴퓨터를 따로 두어, 다른 서버 컴퓨터가 이 컴퓨터를 참조할 수 있도록 한다
      • session : 일정 시간 동안 같은 사용자(정확하게 브라우저를 말한다)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술
      • Django에서는 session login방식을 사용한다
    • 클라이언트가 로그인을 하면 로그인 정보를 서버에 전송하여 서버에서 클라이언트가 접근할 수 있는 값을 생성하여 저장한다. 그 다음 클라이언트에게 sessionid를 쿠키에 담아 전달하여, 클라이언트는 이 정보를 받아 저장
    • 클라이언트는 모든 요청에 쿠키 값을 같이 전송해 서버의 정보를 찾아간다. 쿠키 값을 삭제하거나, 쿠키 값이 없으면 로그인 정보를 얻을 수 없다
  • 3.6 login 상태 확인

    • 조건문을 통해 login 상태를 출력한다
  • 3.7 login 상태에서 뒤로가기 하고 다시 들어가면 csrf token이 만료되어 error가 난다. 이미 login 정보가 생성되었기 때문이다

4. logout 구현

  • session 정보를 삭제하는 것, 쿠키는 삭제되지 않는다. logout시 쿠키값 안에 session id에 빈 값이 저장된다
  • 4.1 모듈로 부터 logout 함수 import

  • 4.2 logout 구현

  • 4.3 url 추가

  • 4.4 실행

    • logout 되었다
profile
멋진 엔지니어가 될 때까지

0개의 댓글

관련 채용 정보