2013-12-13 3 views
1

계정이 만료되면 사용자를 로그 아웃해야하는 컨트롤러 필터가 있지만 쉽게 할 수 없습니다.Devise로 강제로 사용자 로그 아웃

if user_signed_in? && current_user.status == 'expired' 
    redirect_to destroy_user_session_path 
end 

을하지만 위에서 작동하지 않습니다 고안는 로그 아웃 경로에 DELETE 조치를 원하기 때문에, 그래서 당신은 단지에 리디렉션 할 수 없습니다 :

나는 시도했다. 모델이 model.active_for_authentication를 호출하여 활성 상태이면

답변

5

active_for_authentication?

사용자 각각의 요청을 인증 한 후, 검사를 고안? 이 방법은 다른 장치 모듈에서 덮어 씁니다. 예를 들면 : 확인 가능한 덮어 쓰기 .active_for_authentication? 모델이 확인 된 경우에만 true를 반환합니다.

은이 방법을 직접 덮어하지만, 당신이 경우에, 슈퍼에게 전화하는 것을 잊지 마세요 : 자세한 내용과 예제를 찾기 위해 documentation에서

def active_for_authentication? 
    super && special_condition_is_valid? 
end 

봐. 이 doc도 도움이 될 것입니다.

+0

감사합니다. 이 문제는 아직 확인되지 않은 사용자 (확인 가능)와 다른 이유로 비활성 상태 인 사용자 (만료/일시 중지됨/등)를 구분할 수 없다는 점에서 문제가 있습니다. 어떤 아이디어? – Yarin

+2

정확한 상태에 대해 사용자가'inactive_message'를 오버라이드하면됩니다 .- http://stackoverflow.com/a/14966003/165673을보세요. – Yarin

관련 문제