簡體   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