2012-06-01 3 views
0

Есть ли способ получить обратный вызов/обработать некоторые действия, когда сеанс пользователя истекает с помощью Devise?Как получить обратный вызов тайм-аута сеанса?

Равнина старый переопределяя DeviseSessionsController не работает:

class SessionsController < Devise::SessionsController 

    def destroy 
    #do something 
    super 
    end 

end 

Это работает только, когда пользователь выходит из системы, что имеет смысл, так как это не кажется, что контроллер называется тайм-аута сеанса. Кто-нибудь может мне помочь?

ответ

3

я обнаружил, что делает Warden.before_logout было лучшим решением:

# app/models/user.rb 

Warden::Manager.before_logout do |user, auth, opts| 
    #fdsafdsafdsa 
end 

К сожалению, не похоже, чтобы быть каким-либо образом сделать это с чистой Завещания.

+0

Я добавил этот обратный вызов, но пока он вызывается, когда пользователь вручную выходит из системы, он не выглядит для вызова, когда сеанс пользователя заканчивается. Есть ли что-то еще, что мне нужно сделать, чтобы эта обратная связь работала с тайм-аутом? – rushilg

+0

Хм, это странно. Насколько мне известно, он должен работать, если вы, например, попытаетесь получить доступ к странице, а приложение заметило, что ваша сессия была отключена. Если он не работает, я бы предложил сделать еще больше копания. Однако учтите, что таймауты сеанса не запускают события, если это то, что вы пытаетесь захватить ... – varatis

0
before_filter :destroy_custom, :only => [ :destroy ] 


def destroy_custom 
    # Do your thang 
end 

Я был в состоянии сделать это на новом методе. Я предполагаю, что можно сделать то же самое с уничтожением. Обратный вызов можно вызвать внутри devise_custom или devise_custom сам может быть методом, в котором вы хотите выполнить что-то перед уничтожением.

+1

Да, проблема в том, что это не работает при тайм-ауте. Кажется, что сеанс # destroy на самом деле не вызван, когда заканчивается сеанс пользователя. – varatis

+0

Извините, заговорил слишком рано. На самом деле это не вызов метода destory. Нашел этот блог. Надеюсь, это поможет. http://madkingsmusings.blogspot.com/2011/05/session-timeouts-on-rails.html – ShaggyInjun

Смежные вопросы