1

AuthLogic을 사용하여 새 사용자를 활성화/인증하고 현재 세션 데이터를 사용하므로 시스템에서 새 사용자를 활성화 한 후에 어디로 보내야하는지 (예 : 어떤 프로젝트를 표시할지). 따라서 사용자가 처음으로 계정을 활성화 할 때 필요로하는 session [: project_id]과 같은 많은 변수를 사용합니다.사용자 등록을 통해 세션 데이터를 보존하는 방법

문제는 - 사용자가 활성화 할 때 세션 데이터가 없으면 어떻게됩니까? 몇 가지 경우 :

  • 사용자는 하나 개의 브라우저에 등록하지만 다른에 자신의 활성화 이메일을 열어
  • 사용자 레지스터/
  • 사용자는 하루 이틀 전에 대기 모드 시크릿 사용하여 활성화됩니다 계정을 활성화합니다.

내가 알 수있는 바로는 세션 데이터를 사용하면 지속성이 없을 때 사용자가 도움이되지 않는 위치에 머물러 있기 때문입니다 (또는 더 나쁜 경우 세션 변수를 기대하기 때문에 500 오류가 발생합니다). 존재하지 않음).

project_id (및 몇 가지 다른 변수)와 같은 정보는 등록에서 활성화까지 안정적으로 저장해야합니다. 이 한정적이고 일시적인 목적을 위해 새로운 데이터베이스 필드를 만드는 것에 조심 스럽지만 모든 제안에 개방적입니다. 이 허점을 어떻게 닫을 수 있습니까? 오마르의 대답에 대응


: UserMailer.rb에서

나는이 새로운 사용자에게 activation_instructions 전자 메일을 보내 정의 activation_instructions (사용자). 현재로서는 다음을 볼 수 있습니다.

def activation_instructions(user) 
    @user = user 
    @account_activation_url = activate_url(user.perishable_token) 
    mail(:to => "#{user.login} <#{user.email}>", :subject => "Welcome!") 
end 

get 매개 변수를 어떻게 추가 할 수 있습니까? project_id 및 category_id 매개 변수가 있다고 가정 해 보겠습니다.

답변

1

활성화 매개 변수를 통해 get 매개 변수로 매개 변수를 전송하면 세 가지 문제가 모두 해결됩니다.

+0

위 정보를 추가했습니다. – sscirrus

+0

어쨌든 UserMailer.deliver_activation_instructions를 호출 할 때마다 project_id 매개 변수를 전달하고이를 고려하여 전자 메일보기를 변경해야합니다. –