【发布时间】:2014-01-14 16:57:58
【问题描述】:
【问题讨论】:
标签: ruby-on-rails dynamic devise session-timeout session-store
【问题讨论】:
标签: ruby-on-rails dynamic devise session-timeout session-store
我现在已经用一些 before_filters 完成了:
class ApplicationController < ActionController::Base
before_filter :update_session, :check_if_session_is_valid
...
def check_if_session_is_valid
session_timeout = current_user.try(:session_timeout) || 1800
if session[:timestamp] <= session_timeout.seconds.ago.to_i
session[:user_id] = nil
end
end
def update_session
session[:timestamp] = Time.now.to_i
end
在轮询器使用的控制器中,我添加了这个(轮询器不应该更新会话):
skip_before_filter :update_session, :only => :get_new
【讨论】:
使用 devise 最简单的会话超时方法是使用 Devise 'timeoutable' 模块。以下 2 行将提供会话超时功能,仅当您在 Rails 应用程序中使用设计时。
第 1 步:在你的 User.rb 模型中声明这个
devise: timeoutable
第二步:
在app/config/initializers/devise.rb中添加以下行,Devise默认设置为30分钟。
config.timeout_in = 15.minutes
希望这对你有用!
谢谢!
【讨论】: