我是Ruby的新手,使用1.8.7版本。請指導我設置會話超時和重定向到我的登錄頁面。如何在Ruby on Rails中設置會話超時並重定向到登錄頁面
配置:
ActionController::Base.session = { :key => '_fleetsmartlive_session', :secret => 'e9e5983619325de4f',expire_after => 5.minutes', }
我是Ruby的新手,使用1.8.7版本。請指導我設置會話超時和重定向到我的登錄頁面。如何在Ruby on Rails中設置會話超時並重定向到登錄頁面
配置:
ActionController::Base.session = { :key => '_fleetsmartlive_session', :secret => 'e9e5983619325de4f',expire_after => 5.minutes', }
在應用控制器
before_filter :session_expiry
before_filter :update_activity_time
的頂部添加此添加應用程序控制器來使用這些方法。 這會使會話超時,如果頁面在一段時間內保持空閒狀態。
def session_expiry
get_session_time_left
unless @session_time_left > 0
flash.now[:error] = "Your session has timed out. Please log back in."
sign_out
end
end
def get_session_time_left
expire_time = session[:expires_at] || Time.now
@session_time_left = (expire_time - Time.now).to_i
end
def update_activity_time
session[:expires_at] = 3.minutes.from_now
end
應該是簡單的,在你的應用程序控制器添加此
before_filter :check_session_expiry, if: proc{!resquest.url.include?('/signin')}
def check_session_expiry
if !session[:expires_at].nil? and session[:expires_at] < Time.now
redirect_to signin_url
end
session[:expires_at] = MAX_SESSION_TIME.seconds.from_now
end
我已經試過這個解決方案了。沒有運氣 – Raj
請添加一些示例代碼 – usmanali
的ActionController :: Base.session = { :鍵=> '_fleetsmartlive_session', :祕密=>'e9e5983619325de4f', expire_after => 5.minutes' – Raj
請更新您的問題:您嘗試過什麼,您使用的是什麼auth庫(設計?),它如何不按預期工作。 – Jesper