当用户与Devise的会话超时时,是否有方法获得回调/处理某些操作?
重写DeviseSessionsController的普通旧方法不起作用:
class SessionsController < Devise::SessionsController
def destroy
#do something
super
end
end
字符串
这只在用户注销时起作用,这是有意义的,因为它看起来不像是在会话超时时调用控制器。有人能帮帮我吗?
当用户与Devise的会话超时时,是否有方法获得回调/处理某些操作?
重写DeviseSessionsController的普通旧方法不起作用:
class SessionsController < Devise::SessionsController
def destroy
#do something
super
end
end
字符串
这只在用户注销时起作用,这是有意义的,因为它看起来不像是在会话超时时调用控制器。有人能帮帮我吗?
3条答案
按热度按时间4nkexdtk1#
我发现执行Warden.before_logout是最好的解决方案:
字符串
不幸的是,似乎没有任何方法可以使用纯Devise来做到这一点。
zvokhttg2#
字符串
我能用新方法做到这一点。我猜也可以用destroy来做同样的事情。回调可以在devise_custom内部调用,或者devise_custom本身可以是您希望在销毁之前执行某些操作的方法。
eqzww0vc3#
这个问题仍然是最新的。我能想到的最简单的解决方案是覆盖
User
模型中的timedout?
方法。字符串
record.timedout?
在超时时触发注销之前被调用https://github.com/heartcombo/devise/blob/main/lib/devise/hooks/timeoutable.rb#L27C5-L27C5