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) を使用します。

ユーザーが 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**

これらのどれも機能していないようです。

助言がありますか?

セッションヘルパー

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
4

2 に答える 2

0

これを試しましたか?

編集:

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
于 2013-04-11T22:37:30.217 に答える
0

CookieStoreの問題を調査しているときに、次のことに遭遇しました。私はそれがあなたの質問に答えると思います:

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

CookieStore でセッションタイムアウトを追加するために Chris Heald が提案するコードは次のとおりです (これは 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
于 2013-10-04T01:55:46.587 に答える