2011-11-30 85 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

不知道這是否是答案。 在我的測試應用程序()上,我沒有碰到這個文件,一切正常。但我很高興你的問題解決了:)。 –