如何获得Devise会话超时回调?

时间:2012-06-01 00:56:59

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 devise

当用户的会话超时时,有没有办法让回调/处理某些动作?

覆盖DeviseSessionsController的普通旧版本不起作用:

class SessionsController < Devise::SessionsController

  def destroy
    #do something
    super
  end

end

这仅在用户注销时才有效,这是有道理的,因为它似乎不会在会话超时时调用控制器。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

我发现做Warden.before_logout是最好的解决方案:

# app/models/user.rb

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

不幸的是,似乎没有办法用纯粹的Devise做到这一点。

答案 1 :(得分:0)

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


def destroy_custom 
    # Do your thang
end

我能够在新方法上做到这一点。我猜也可以用破坏做同样的事情。回调可以在devise_custom中调用,或者devise_custom本身可能是你想要在destroy之前执行某些东西的方法。