2011-11-30 84 views
2

我试图使用自动signout功能,rails 3.1,devise gem,:timeoutable不起作用,为什么?

这里是我的模型:

class Student < ActiveRecord::Base 

    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :timeoutable 

    def timeout 
     3.seconds 
    end 
end 

这里是routes.rb中:

devise_for :students do get '/students/sign_out' => 'students/sessions#destroy' end 

我签到,然后我等待5秒钟,此时,学生会话应该过期,但是,如果向其他 受保护的页面迁移不会重定向回登录表单,这意味着该会话仍处于活动状态。

有什么我失踪?我应该检查什么?

感谢, hopewise

回答

5

有对色器件维基不正确的信息。正确的方法是timeout_in

我修复了维基页面https://github.com/plataformatec/devise/wiki/How-To:-Add-timeout_in-value-dynamically

+0

我已经升级到Devise 1.5.2,但是,自动注销仍然不能正常工作,我现在应该检查什么? 我已将此添加到学生模型: 2.seconds 结束 高清超时 2.seconds 结束 但是,仍然没有工作,我试图把一个断点到上述方法,使用高清timeout_in RubyMine,但是,他们从未到达过。 有什么想法吗? – simo

+1

我已经在这里上传了一个例子: https://github.com/rodrigoflores/Testing-Timeout。 检查https://github.com/rodrigoflores/Testing-Timeout/blob/master/app/models/user.rb和开发日志说超时正在工作https://github.com/rodrigoflores/Testing-超时/斑点/主/日志/ development.log#L138 –

+2

我发现解决方案, config.timeout_in被评论在文件devise.rb在配置/初始化文件夹 我认为添加:timeoutable是我所有我认为config/initializers中的devise.rb应该添加到旁边的文档中:可超时的,这对像我这样的RoR新手会有所帮助! – simo

0

我找到了解决办法, 的config.timeout_in在文件devise.rb在配置/初始化文件夹评论

我认为补充说:timeoutable是所有我必须做的,我觉得devise.rb在配置/初始化器应该添加到旁边的文档说:可超时,这将有助于RoR新手。

+0

不知道这是否是答案。 在我的测试应用程序()上,我没有碰到这个文件,一切正常。但我很高兴你的问题解决了:)。 –