我正在尝试按照其他堆栈溢出帖子的建议,但没有任何运气。
现在当用户会话超时且用户尝试与页面交互时,我在控制台中收到两个401 Unauthorized错误。我希望它改为重定向到登录页面。
我发现我可以创建自己的自定义失败应用程序,并覆盖redirect_url以使其始终重定向。这就是我所拥有的:
在/config/initializers/devise.rb 中需要“custom_timeout_redirect”
config.warden do |manager|
manager.failure_app = CustomTimeoutRedirect
end
在custom_timeout_redirect.rb中:
class CustomTimeoutRedirect < Devise::FailureApp
def redirect_url
puts 'TRYING TO REDIRECT TO THE HOMEPAAAAAAAAAAAAAAAAAAGE'
puts scope_url
scope_url
end
会话超时时不运行此代码。更重要的是,我也试图覆盖重定向方法,似乎它也没有在会话超时时被调用。
有人可以引导我朝着正确的方向前进吗?我已经在网上阅读了这个问题的解决方案,足以让我觉得我只是在愚蠢。
谢谢!
答案 0 :(得分:1)
为了让用户重定向到登录。我相信您应该使用Timeoutable
代替http://www.rubydoc.info/github/plataformatec/devise/master/Devise/Models/Timeoutable
在config / initializers / devise.rb config.timeout_in = 30.minutes
如果要定义自定义超时持续时间,可以执行以下操作:
https://github.com/plataformatec/devise/wiki/How-To:-Add-timeout_in-value-dynamically
class User < ActiveRecord::Base
devise (...), :timeoutable
def timeout_in
if self.admin?
1.year
else
2.days
end
end
end
希望它有所帮助!