Skip to content

Commit

Permalink
Only add sessions refresh data to existing sessions
Browse files Browse the repository at this point in the history
Prior to change session were created for _every_ request (including API
requests).
  • Loading branch information
cdubz committed Aug 5, 2021
1 parent 207a5bc commit f292698
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions babybuddy/middleware.py
Expand Up @@ -26,21 +26,22 @@ def __call__(self, request):

class RollingSessionMiddleware:
"""
Periodically resets the session expiry.
Periodically resets the session expiry for existing sessions.
"""
def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
session_refresh = request.session.get('session_refresh')
if session_refresh:
try:
delta = int(time.time()) - session_refresh
except (ValueError, TypeError):
delta = settings.ROLLING_SESSION_REFRESH + 1
if delta > settings.ROLLING_SESSION_REFRESH:
if request.session.keys():
session_refresh = request.session.get('session_refresh')
if session_refresh:
try:
delta = int(time.time()) - session_refresh
except (ValueError, TypeError):
delta = settings.ROLLING_SESSION_REFRESH + 1
if delta > settings.ROLLING_SESSION_REFRESH:
request.session['session_refresh'] = int(time.time())
request.session.set_expiry(settings.SESSION_COOKIE_AGE)
else:
request.session['session_refresh'] = int(time.time())
request.session.set_expiry(settings.SESSION_COOKIE_AGE)
else:
request.session['session_refresh'] = int(time.time())
return self.get_response(request)

0 comments on commit f292698

Please sign in to comment.