Eli*_*ray 1 timeout ruby-on-rails devise
我已经设置:timeoutable并设置了我的开发环境和生产的首选项.除非它没有重定向到登录页面,否则超时工作正常.为了测试,我将超时设置为10秒.
如果我登录,等待10秒,没有任何反应.如果我重新加载页面,它将加载相同的页面,但我不会登录.
过去,设计超时总是会重定向回登录页面.但人们发现这令人困惑.这个想法是,如果用户在不需要登录的页面上,当超时发生时,应允许用户留在那里. 此自定义是获取此行为的推荐方法.
问题的默认超时行为被记录为问题#1596中的错误,并且此提交进行了更改,以便超时将尝试保留在当前页面上.
发生超时时,可超出的代码会抛出一条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
Run Code Online (Sandbox Code Playgroud)
lib/custom_failure_app.rb使用以下代码创建新文件:
class CustomFailureApp < Devise::FailureApp
def redirect_url
scope_url # Always redirect to signin page
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,在此提交中scope_path已更改为.因此,根据您最近更新的设计宝石,您可能需要更改此设置.scope_url