2013-04-11 3 views
0

У меня есть приложение, в котором я использовал учебник, предлагаемый http://ruby.railstutorial.org/chapters/a-demo-app?version=3.0#sec:planning_the_application и http://ruby.railstutorial.org/chapters/sign-in-sign-out#sec-signin_failure (Rails 3.2) для создания моей модели пользователя и сеанса.Set Session Expiry - Rails 3

Я хочу реализовать истечение, если пользователь не работает в течение 5 минут или около того. Я пробовал:

config.timeout_in = 5.minutes in my **application.rb** 

и

config.session_store :cookie_store, key: 'blanked_out', :expire_after => 2.minutes in my **session_store.rb** 

Ни один из них не похоже, работает.

Любые предложения?

Сессии Helper

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 

ответ

0

ли у попробовать это?

EDIT:

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

Где бы я помещаю этот код? – RubyNewbie

+0

в вашем контроллере вы можете определить метод expire_session с этой строкой, а затем установить before_filter: expire_session за исключением параметров, где u не хочет, чтобы он был включен. – Leon

+0

К сожалению, попробовал это безрезультатно – RubyNewbie

0

я наткнулся на следующее в то время как исследуя проблему CookieStore. Я думаю, что это ответ на ваш вопрос:

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

Вот код Chris Heald предлагает для добавления тайм-аут сеанса с CookieStore (обратите внимание, это будет идти в файле application_controller.rb:

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

Возможно, вы захотите добавить некоторые детали из ссылки на ваш ответ. – dcaswell