如何获得设计会话超时回调?

var*_*tis 2 ruby-on-rails devise ruby-on-rails-3 ruby-on-rails-3.1

当用户与 Devise 的会话超时时,有没有办法获得回调/处理某些操作?

覆盖 DeviseSessionsController 的普通旧方法不起作用:

class SessionsController < Devise::SessionsController

  def destroy
    #do something
    super
  end

end
Run Code Online (Sandbox Code Playgroud)

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

var*_*tis 6

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

# app/models/user.rb

Warden::Manager.before_logout do |user, auth, opts|
  #fdsafdsafdsa
end
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎没有任何方法可以用纯设计来做到这一点。

  • 我已经添加了这个回调,但是当用户手动注销时它被调用,当用户的会话超时时它似乎没有被调用。我还需要做些什么才能让这个回调在超时时工作? (3认同)