[Django] Authentication of python django
여러 방법이 있지만 로그인 방법 크게 2파트
1. 장고에 내장 user로 구현
2. Profile모델을 만들어서 커스텀 유저 모델을 구현
장고 User objects와 1 : 1로 되어있는 모델 만들기.
1. 장고에 내장 user로 구현
상황에 맞는 에러 메시지를 보내주는 것이 친절한 서비스가 될 것 ..!
< 회원 가입 >
1. POST 요청인지 확인 : form에 담아서 POST 요청을 보낼 것이다. if request.method == "POST":
2. 제대로 input을 채워서 보냈는지 확인
3. 이미 사용 중인 아이디인지 확인 : 이미 사용중인 아이디가 아니라면 다음 단계로 넘어가기. 등록한 유저들이랑 비교해야함.
4. 비밀번호 체크를 맞게 했는지 확인 : 비밀번호 2번 입력했을 때 일치하는지 확인.
5. 유저 모델 생성
user = User.objects.filter(username=user_id)
if len(user) == 0: // 존재하지 않는 경우
if user_pw == user_pw_check :
created_user = User.objects.create_user(
username=user_id,
password=user_pw
)
auth.login(request, created_user)
return redirect('home')
else: // 비밀번호를 다르게 입력한 경우
context['error']['state'] = True
context['error']['msg'] = ERROR_MSG['PW_CHECK']
else : // 존재하는 경우, 에러 처리 해주어야 한다.
context['error']['state'] = True
context['error']['msg'] = ERROR_MSG['ID_EXIST']
6. 로그인 해주기
7. 리다이렉트 해주기
8. 회원가입 버튼 안 보이게
< 로그인 >
1. POST 요청인지 확인
2. 제대로 input을 채워서 보냈는지 확인
3. 존재하는 아이디인지 확인
4. 해당 아이디와 비밀번호가 맞는지 확인
5. 유저 모델 생성
6. 로그인 해주기
7. 리다이렉트 해주기
8. 로그인된 유저 이름 보여주기
from django.contrib.auth.models import User
from django.contrib import auth
type="password" 라고 하면 *로 입력된다.
ERROR_MSG 사용할 에러 메시지를 딕셔너리 형태로 static하게 미리 정의해두면, 계속해서 사용할 수 있어서 편리하다.
'ID_EXIST' : '이미 사용 중인 아이디 입니다.',
'ID_NOT_EXIST' : '존재하지 않는 아이디 입니다.',
...
파일로 하나 파서, util 같은 걸로 사용하면 좋다.
ERROR state=TRUE일 때 context를 넘겨준다.
원래 context는 ERROR의 state를 False로 해둔다.