2012-04-10 4 views
4

사용자 세션이 시간 초과되었을 때 devise 및 :timeoutable을 사용하여 기록하고 싶습니다.장치 세션이 만료 될 때 감지

현재로서는 :timeoutable이 예상대로 작동하고 지정한 비활성 기간이 지난 후 사용자를 로그인 페이지로 리디렉션하지만이 외에도 시간 초과 기간을 조정하는 데 도움이되는 경우 로그에 기록하고 싶습니다.

분명히 사용자가 명시 적으로 로그 아웃하지 않는 한 모든 세션이 시간 초과됩니다. 마지막 활동 이후의 시간을 확인하여 자연 시간 초과인지 또는 너무 짧은 시간 초과 기간을 설정 한 결과인지 확인합니다.)

SessionController에서 세션 시간 초과를 감지 할 수있는 이벤트가 있습니까?

답변

0

사용자가 "로그 아웃"을 명시 적으로 클릭 할 때 로깅을해야한다고 생각합니다. :timeoutable에는 사용자 세션이 자동으로 만료되는 기본 기간이 있으므로

Devise::SessionsController을 상속하는 Sessions_Controller을 생성하여 "로그 아웃"활동을 기록 할 수 있습니다. 현재 시간을 기록한 후에 super을 잊지 마세요.

1

내가 후크 모든 종류의를 본 적이 없다,하지만 당신은 유증에 의해 사용되는 timeoutable 모듈의 코드를 무시할 수 :

module Devise 
    module Models 
    module Timeoutable 
     def timedout?(last_access) 
     # your custom code goes into this method 
     return false if remember_exists_and_not_expired? 
     !timeout_in.nil? && last_access && last_access <= timeout_in.ago 
     end 
    end 
    end 
end 
관련 문제