1

Railsセッションのタイムアウトを行い、セッションの有効期限が切れた後にサインインページにリダイレクトしたいと思います。

これは私のアプリケーション コントローラーであり、動作していないようです。

class ApplicationController < ActionController::Base

    protect_from_forgery with: :exception
    before_filter :session_expires, :only => [:login]

    def session_expires
      a = session[:expires_at]
      b = Time.now
      minutes = (a - b)/1.minute
      if b > a
        reset_session
        flash[:error] = 'Session Expire !'
        render "sessions/new"
      end
    end


end

よくわかりませんが、JqueryまたはAjaxを使用して機能させる必要があります。誰でも私が従うことができるいくつかのアイデアや良いチュートリアルを教えてもらえますか. 百万で感謝します。

4

3 に答える 3

0

before_filterログインだけでなく、リクエストごとに実行したい。

に置き換えbefore_filter :session_expires, :only => [:login]ますbefore_filter :session_expires

于 2013-06-18T15:56:04.897 に答える
0

私は次の簡単な解決策を得ました。

application.rb に簡単なメソッドを 1 つ追加しました。それはうまくいきました。

class ApplicationController < ActionController::Base
    before_filter :session_expires

    MAX_SESSION_TIME = 60 * 60

    helper_method :current_user?  

    protected

    def current_user?
      if session[:user_id].nil?
        false
      else
        true
      end
    end  

    def authorize
      unless current_user?
        flash[:error] = "Please Login to access this page !";
        redirect_to root_url
        false
      end
    end

    def session_expires
      if !session[:expire_at].nil? and session[:expire_at] < Time.now
        reset_session
      end
      session[:expire_at] = MAX_SESSION_TIME.seconds.from_now
      return true
    end


  protect_from_forgery
end
于 2014-08-12T07:06:52.133 に答える