[PATCH conductor] Fix session expiration/backbone interaction
Jason Guiditta
jguiditt at redhat.com
Fri Aug 17 16:35:27 UTC 2012
On 17/08/12 09:52 -0400, Scott Seago wrote:
>The prior commit logs the user out on any backbone request
>that comes in more than 15 minutes after login. This modifies the
>behavior to log out only if 15 minutes have passed since the last
>non-backbone request.
>---
> src/app/controllers/application_controller.rb | 21 ++++++++++++++++++---
> 1 files changed, 18 insertions(+), 3 deletions(-)
>
>diff --git a/src/app/controllers/application_controller.rb b/src/app/controllers/application_controller.rb
>index 92e7e30..8808b7e 100644
>--- a/src/app/controllers/application_controller.rb
>+++ b/src/app/controllers/application_controller.rb
>@@ -462,9 +462,24 @@ class ApplicationController < ActionController::Base
>
> #before filter to invalidate session for backbone
> def check_session
>- return unless request.format == :json
>- session_entity = SessionEntity.find_by_session_id(current_session)
>- logout if session_entity.present? && session_entity.created_at < 15.minutes.ago
>+ # FIXME: we really need a better "is it backbone?" test than json format
>+ # since other actions (ajax API calls from UI, etc) could also use json
>+ if request.format == :json
>+ # compare to last non-backbone reqest time
>+ last_time = session[:last_active_request]
>+ if last_time
>+ logout if last_time < 15.minutes.ago
>+ else
>+ # This isn't really an active reqest, but
>+ # boostrapping session time if none set
>+ # (should really only happen the first time this code is
>+ # introduced and there's a non-expired session
>+ session[:last_active_request] = Time.now
>+ end
>+ else
>+ # reset last active request time
>+ session[:last_active_request] = Time.now
>+ end
> end
>
> end
>--
>1.7.6.5
>
ACK, tested to make sure the behavior is as expected, and things seems
to work correctly now.
-j
More information about the aeolus-devel
mailing list