로그인 과정 트러블 슈팅
sign up 로직과 log in 로직을 똑같이 처리해서 문제가 됐었다. 회원가입을 할 때는 provider 가 생성이 되지 않은 상태였기 때문에 프론트에 social_user.provider 을 줄 수 없다. 그래서 provider 을 주는 부분을 없애주고 프론트에서는 provider 가 undefined 라면 회원가입이 완료되었으니 로그인으로 이동해달라는 메세지를 띄우게 했다.
login.js
const response = await fetch(`${backend_base_url}/accounts/signup/`, {
headers: {
'content-type': 'application/json'
},
method: 'POST',
body: JSON.stringify({
"nickname": nickname,
"email": email,
"password1": password1,
"password2": password2
})
})
.then(res => {
//동일한 username 이 있을 경우
if (res.status === 400) {
console.log(res)
return res.json()
} else if (res.status == 201) {
window.location.href = "../templates/email_await.html"
return res.json(); //Promise 반환
}
})
.then((res) => {
console.log(res)
try {
if (res.password1) {
alert(res.password1) // 비밀번호 관련 400 response 가 왔을 때
}
} catch (error) {
console.log(error)
}
})
redirect.js
else if (response.status == 201) {
localStorage.clear()
alert("회원가입이 완료되었습니다. 로그인을 진행해주십시오")
window.location.href = "../templates/login.html"
}
{
"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzAxMTM4MjI0LCJpYXQiOjE3MDEwOTUwMjQsImp0aSI6ImQ5ZjlmZGVlMmZjOTQ1YzZiYjRjZGE0ZThiZmVlZDdjIiwidXNlcl9pZCI6Nn0.9ktKyjDf3TDTk-7BVv3KuT6OQLm-ctNpbRwg6U-e8Tw",
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTcwMTE4MTQyNCwiaWF0IjoxNzAxMDk1MDI0LCJqdGkiOiIzYzBlOTdlOWRhMzA0NTNiYmNiZjFlYjg2NmQ5OTU4YyIsInVzZXJfaWQiOjZ9.5FL5f9elRsnnNglgSrVTy6VkskJG9b_9sjExS-V4cVM",
"user": {
"pk": 6,
"email": "(내 이메일)"
}
}
토큰이 왜.... 나한테 토큰이 왔다. 원래 message: "이메일을 확인해주세요" 이런 게 와야 하는데...
url 이 잘못됐나 싶었지만 path("signup/", views.CustomRegisterView.as_view(), name="signup"),
제대로 되어있다. 다만 토큰이 오는 걸로 봐선, EmailRegisterView 가 아예 작동을 안 하는 것 같았다.
24일 이후에 이메일 관련 설정 건드리신 분 계시냐고 슬랙에 여쭤본 결과 외부 로그인 실험하면서 settings.py 의
# 이메일 인증 사용
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
# 이메일 인증 사용하지 않음
# ACCOUNT_EMAIL_VERIFICATION = "none"
를
# 이메일 인증 사용
# ACCOUNT_EMAIL_VERIFICATION = "mandatory"
# 이메일 인증 사용하지 않음
ACCOUNT_EMAIL_VERIFICATION = "none"
로 바꿔놓으신 분이 계셨다... 난 로직 문제인 줄 알고 한참 고민했는데ㅠ 역시 의문이다 싶은 게 있으면 바로바로 올려놓는 게 맞는 것 같다.
역시 팀프로젝트 할 땐 소통이 중요한 것 같네요👍