체단실 - Login

이제일·2021년 1월 14일
0

체단실

목록 보기
3/9
post-thumbnail

Login 기능 완성

회원가입(email 인증), login(session)의 기능을 추가하였다.

Template - 선정

먼저 기본 틀이 될 홈페이지의 형식을 무료 html 템플릿에서 변형시키는 방향으로 진행했다.
해당 Template 출처

dialog - 구현

먼저 구현해보고 싶었던 것이 로그인이기 때문에 만드려고 생각 하던 중 현재 보고있는 플랫폼인 velog.io의 로그인처럼 창 형식으로 띄우고 싶었다. 와중에 이쁜 것을 구해보고자 codepen에서 dialog 구현중 하나의 코드를 따와 템플릿에 녹여들게 했다.

login - 구현

먼저 겉보기가 중요하다 생각하기 때문에 Login Form 형식도 codepen에서 css정도만 따와서 진행했다.
또한 로그인 폼을 하나만 두어서 id가 없을 경우 자동으로 회원가입을 진행한다.

아래는 로그인 겸 회원가입중이다.

login - DB

먼저 models.py에 user테이블(email,password)만을 만들어 유저의 로그인만 신경을 쓰고 차차 DB는 조정 될 예정이다. django의 auth 기능중 User 객체를 사용하지 않고 따로 만들었다.

model 설정과 ORM 문법의 경우 django 공식 문서를 참고했다.

login - 회원가입

회원가입은 이메일을 입력받아서 Django의 SMTP라는 이메일기능으로 메일인증으로 진행되게 했다.(프로젝트용 gmail계정을 만들었다.)

login - 메일인증

get방식으로 이메일로 보낸 url의 토큰(랜덤문자열)과 서버에서 파일(jsno)로 만든 문자열이 일치할경우 자동 회원가입 진행(파일의 경우 1시간 동안만 저장)

아래는 메일 발송 후 보여지는 페이지이다.

login - 보안

  • SQL Injection : django의 ORM기능으로 자동으로 방어한다고 한다. (시도해봤다가 말았다.)
  • 비밀번호 : 비밀번호같은 경우는 해쉬함수(bcrypt)를 사용하여 DB에 저장하도록 했다.
  • csrf_token : form에 재대로된 값이 들어갔는지 확인. 사실 post방식에 필수적으로 들어가게끔 django에서 강제한다.

    아래는 공통적인 error 페이지 형식을 만들었다. (index템플릿의 헤더부분을 가져왔다.)

profile
세상 제일 이제일

0개의 댓글