繁体   English   中英

使用设计和会话存储的 Rails 动态会话超时

[英]Rails dynamic session timeout using devise and session store

我知道我可以使用这里描述的设备进行动态会话超时(每个用户)

这以前工作得很好,但现在我正在使用 rails 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

第2步:

app/config/initializers/devise.rb添加以下行,Devise 设置的默认值为 30 分钟。

config.timeout_in = 15.minutes

希望这对你有用!

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM