활성화 이메일 재전송 - 404 오류

사용자가 가입할 때 활성화 이메일은 정상적으로 작동합니다. 그러나 로그인하려고 시도하고 활성화 이메일을 다시 보내면 다음과 같은 프로덕션 로그가 나타납니다:

Started POST "/u/action/send_activation_email" for (removed ip and timestamp)
Processing by UsersController#send_activation_email as */*
Completed 404 Not Found in 2ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 542)

이 오류는 3.2.0.beta1-dev를 실행 중인 모든 컨테이너에서 발생합니다. “production_errors.log”는 비어 있습니다.

재현 방법:

  1. 기본 폼으로 가입합니다.
  2. 활성화 이메일을 무시하고 로그인하려고 시도합니다.
  3. 팝업 “You can’t log in yet. We previously sent an activation email to you…”에서 “Resend Activation Email”을 클릭합니다.
  4. “An error occurred: The requested URL or resource could not be found.”라는 메시지가 표시됩니다.
  5. “OK”를 클릭하면 “We sent another activation email to you at…”라는 팝업이 나타납니다. (그러나 두 번째 활성화 이메일은 실제로 전송되지 않습니다)

함수/액션 send_activation_email이 레이트 리미팅(속도 제한)을 적용받고 있는 것을 확인했습니다.

def send_activation_email
    if current_user.blank? || !current_user.staff?
      RateLimiter.new(nil, "activate-hr-#{request.remote_ip}", 30, 1.hour).performed!
      RateLimiter.new(nil, "activate-min-#{request.remote_ip}", 6, 1.minute).performed!
    end

이것이 404 오류의 원인이 될 수 있습니까? 이 문제를 디버깅하기 위해 확인할 수 있는 다른 로그가 있습니까?

1개의 좋아요

로컬 개발 사이트에서 테스트해 본 결과, 활성화 이메일의 링크를 클릭하지 않은 사용자가 사용자 이름/비밀번호로 로그인하려고 시도한 후 요청이 이루어질 때, /u/action/send_activation_email으로 전송되는 POST 요청에 username 또는 email 파라미터가 설정되지 않는 것 같습니다:

반면, 계정 등록 직후 표시되는 계정 생성 페이지에서 ‘활성화 이메일 재전송’ 버튼을 클릭하면 요청에 username 파라미터가 설정됩니다. 참고로 정상적으로 작동하는 버튼은 다음과 같습니다:

제 추측에 따르면, 정상적으로 작동하는 요청의 경우 POST 요청의 파라미터가 사용자가 가입 양식을 완료할 때 입력한 값 기반으로 설정되는 것으로 보입니다.

404 오류는 여기에서 발생합니다:

1개의 좋아요

이것은 버그인 것 같습니다.

참고로, 이 문제는 계정 비활성화가 관리자/사용자 페이지에서 처리된 사용자가 로그인 시도를 한 후 “활성화 이메일 다시 보내기” 버튼을 클릭할 때 활성화 이메일을 트리거하지 못하게 하는 문제이기도 합니다.

이 경우에도 위에서 보고된 것과 동일한 오류가 발생합니다.

2개의 좋아요

@john.sanchirico 님, 보고해 주셔서 감사합니다. 또한 @simon 님의 상세한 분석에도 감사드립니다. :pray:

이 문제는 다음을 통해 수정될 예정입니다.

2개의 좋아요

이 주제는 20시간 후 자동으로 닫혔습니다. 새로운 답변은 더 이상 허용되지 않습니다.