首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置会话到期- Rails 3

设置会话到期- Rails 3
EN

Stack Overflow用户
提问于 2013-04-11 20:22:34
回答 2查看 1K关注 0票数 0

我有一个应用程序,其中我使用applicationfailure (Rails 3.2)提供的教程来创建我的用户和会话模型。

如果用户处于活动状态5分钟左右,我希望实现过期.我试过:

代码语言:javascript
复制
config.timeout_in = 5.minutes in my **application.rb**

代码语言:javascript
复制
config.session_store :cookie_store, key: 'blanked_out', :expire_after => 2.minutes in my **session_store.rb**

这些似乎都不起作用。

有什么建议吗?

会话助手

代码语言:javascript
复制
def sign_in(user)
  cookies.permanent[:remember_token] = user.remember_token
  self.current_user = user
end

def sign_out
  self.current_user = nil
  cookies.delete(:remember_token)
end

def current_user
   @current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
EN

回答 2

Stack Overflow用户

发布于 2013-04-11 22:37:30

你试过这个吗?

编辑:

代码语言:javascript
复制
MAX_SESSION_TIME = {enter time}

before_filter :verify_session

def verify_session

   if !session[:expire].nil? and session[:expire] < Time.now
      # Session has expired. Clear or reset session.
      reset_session
   end

   # Assign a new expiry time, whether the session has expired or not.
   session[:expire] = MAX_SESSION_TIME.seconds.from_now
   return true
end
票数 0
EN

Stack Overflow用户

发布于 2013-10-04 01:55:46

我在研究CookieStore问题时遇到了以下情况。我认为它回答了你的问题:

https://www.coffeepowered.net/2013/09/26/rails-session-cookies/

以下是Chris建议使用CookieStore添加会话超时的代码(请注意,这将在您的application_controller.rb文件中进行:

代码语言:javascript
复制
class ApplicationController
  before_filter :validate_session_timestamp
  after_filter  :persist_session_timestamp

  SESSION_TTL = 48.hours
  def validate_session_timestamp
    if user? && session.key?(:ttl) && session[:ttl] < SESSION_TTL.ago
      reset_session
      current_user = nil
      redirect_to login_path
    end
  end

  def persist_session_timestamp
   session[:ttl] = Time.now if user?
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15958171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档