我已设置:timeoutable
并为我的开发环境和制作设置首选项。除非它没有重定向到登录页面,否则超时工作正常。为了测试,我将超时设置为10秒。
如果我登录,等待10秒,没有任何反应。如果我重新加载页面,它将加载相同的页面,但我不会登录。
答案 0 :(得分:5)
过去,设计超时总是会重定向回到登录页面。但人们发现这令人困惑。这个想法是,如果用户在不需要登录的页面上,当超时发生时,应允许用户留在那里。 This customization是获得此行为的推荐方法。
默认超时行为被记录为Issue #1596中的错误,this commit进行了更改,以便超时会尝试保留在当前页面上。
发生超时时,timeoutable代码会抛出timeout
消息,FailureApp类会使用redirect_url
方法来决定重定向到哪里。如果您始终希望重定向到登录页面,则可以覆盖redirect_url
方法:
在config/initializers/devise.rb
Devise.setup do |config| ... end
块中设置这些行:
require "custom_failure_app"
config.warden do |manager|
manager.failure_app = CustomFailureApp
end
使用以下代码在lib/custom_failure_app.rb
创建一个新文件:
class CustomFailureApp < Devise::FailureApp
def redirect_url
scope_url # Always redirect to signin page
end
end
请注意,scope_path
已更改为this commit中的scope_url
。因此,根据您最近更新设计宝石的方式,您可能需要更改此设置。