와너두 07

·2023년 11월 27일
0

웹 프로젝트

목록 보기
14/18

로그인 과정 트러블 슈팅

  1. 서드 파티 로그인 시 social_user.provider 가 undefined 로 표시되는 문제

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"

        }
  • 로그인은 200, 회원가입은 201 이므로 맞춰서 해줬다.
  1. 회원 가입 시 이메일이 오지 않는 오류
    201이 나오면서 생성은 되는데 이메일이 내 계정으로 오지 않았다. 처음에는 warning 때문인 줄 알고 노란 줄이 쳐진 함수를 모두 import 를 해줬는데 아직 이메일이 오지 않아서 postman 으로 요청을 보내본 결과
{
    "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"

로 바꿔놓으신 분이 계셨다... 난 로직 문제인 줄 알고 한참 고민했는데ㅠ 역시 의문이다 싶은 게 있으면 바로바로 올려놓는 게 맞는 것 같다.

profile
공부 중

1개의 댓글

comment-user-thumbnail
2023년 11월 28일

역시 팀프로젝트 할 땐 소통이 중요한 것 같네요👍

답글 달기