2012-07-10 4 views
2

내 사용자 모델에서 devise : confirmable을 사용하고 있습니다.등록 후 링크를 ​​확인하지 않고 로그인하는 방법

나의 요구 사항은 가입/등록 후 사용자가 성공적으로 (확인없이) 로그인해야하며 확인 링크가 사용자의 이메일로도 전송되어야합니다.

두 번째로 사용자가 자신의 계정을 확인하지 않은 경우 로그인하지 않아야합니다.

어떻게이 목표를 달성 할 수 있습니까?

감사

답변

5

정확히 당신이 찾고있는 무엇을, 당신은뿐만 아니라 sessions controller으로 고안 confirmations controller를 오버라이드 (override)에 마법을 만들어야합니다 달성하기 위해. 이 경로를 선택하는 경우에는 Wiki 페이지에 Devise 컨트롤러를 무시하는 많은 예가 있습니다. :trackable 모듈을 활성화하면 sign_in_count에 액세스 할 수 있습니다.이 번호는 확인 될 때까지 하나만 확인하고 허용 할 수 있습니다.

그러나 나는 쉽게 받아 들일만한 해결책을 제시하고자합니다. devise.rbinitializer 파일을 보면 122 행부터 일정 기간 동안 응용 프로그램에 대한 확인되지 않은 액세스를 허용 할 수 있습니다.

# ==> Configuration for :confirmable 
# A period that the user is allowed to access the website even without 
# confirming his account. For instance, if set to 2.days, the user will be 
# able to access the website for two days without confirming his account, 
# access will be blocked just in the third day. Default is 0.days, meaning 
# the user cannot access the website without confirming his account. 
# config.allow_unconfirmed_access_for = 2.days 

나는 개발자와 최종 사용자 관점에서 모두이 기능을 활성화하고, 더 나은 방법이 될 것입니다 응용 프로그램 허용 뭔가로 설정, 결국 생각합니다. 또한 send_instructions 라인 34에 locale에 무엇인가 넣으십시오. 전자 메일을 통해 계정을 확인하기 전에 x 시간 (일)/일 (일)이 있음을 사용자에게 알립니다.

+0

굉장한 답변입니다. 감사합니다. +1 – ajbraus

+0

작동하려면 어떤 트릭이 필요합니까? 이 줄의 주석을 제거했지만 API를 통해 로그인하려고 할 때 작동하지 않는 것 같습니다. –

3

가장 쉬운 방법은 config.allow_unconfirmed_access_for = 2.minutes으로 지정하면 등록 후 바로 로그인 할 수 있지만 2 분 후에는 2 분 이내에 로그인하지 않으면 로그인 할 수 없습니다.

관련 문제