- Django에서는 회원가입을 위한 모델과 form을 제공해준다. 따로 작성 불필요. auth에 저장되어 있다
- 만약 기능 추가시 python의 상속을 사용하면 된다
- Django안에 저장된 회원가입용 form을 가져와 사용한다
- FORM에 DATA를 넣어주면 속성에 맞게 DATA를 맞춰서 저장해준다. 또한 검증이 가능하다
- is_vaild에 따라 아래 조건을 검사하여 유효한지 검증
- 회원가입한 Data는 auth_user에 저장
- password는 암호화되서 저장된다
- login용 form
- 원래는 login 함수지만 class명이 login이므로 이름을 변경하여 import
- loginform에서 user만 가져옴, 이 코드 안에는 사용자 이름을 가지고 그 이름에 해당하는 password를 DB로 부터 가져와 비교하는 기능이 구현되어있다. 따라서 FORM에서 유저정보를 불러와 전달해줘야한다
- post시에는 AuthenticationForm에 request를 넣어줘야한다
- login을 한 기록은 저장해놔야지 login 상태가 지속된다. 이는 서버, 클라이언트 어디든 저장할 수 있다. 본 실습에서는 서버에 저장
- 클라이언트 컴퓨터 메모리 저장될 경우 token 방식 로그인으로 암호화된 값으로 저장한다
- 암호화된 값을 클라이언트가 서버에 전송할 때 이를 해독하는 과정이 실행되며 메모리가 소비된다
- 서버 컴퓨터 메모리에 저장될 경우 session 방식 로그인으로 저장
- session 클러스터링 방식 : 서버 컴퓨터는 분산 구조이므로, 로그인이 저장된 컴퓨터가 다른 작업을 해서 다른 컴퓨터가 클라이언트와 연결될 경우, 로그인 정보가 사라져 로그인이 풀릴 수 있다. 이 클러스터링 방식은 모든 컴퓨터에 저장하는 방식인데, 이럴경우 메모리 낭비가 심하므로, session 컴퓨터를 따로 두어, 다른 서버 컴퓨터가 이 컴퓨터를 참조할 수 있도록 한다
- session : 일정 시간 동안 같은 사용자(정확하게 브라우저를 말한다)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술
- Django에서는 session login방식을 사용한다
- 클라이언트가 로그인을 하면 로그인 정보를 서버에 전송하여 서버에서 클라이언트가 접근할 수 있는 값을 생성하여 저장한다. 그 다음 클라이언트에게 sessionid를 쿠키에 담아 전달하여, 클라이언트는 이 정보를 받아 저장
- 클라이언트는 모든 요청에 쿠키 값을 같이 전송해 서버의 정보를 찾아간다. 쿠키 값을 삭제하거나, 쿠키 값이 없으면 로그인 정보를 얻을 수 없다
- 조건문을 통해 login 상태를 출력한다
- logout 되었다