Cache user session

This commit is contained in:
Miguel Grinberg
2022-09-24 19:40:28 +01:00
parent 1547e861ee
commit 01947b101e
2 changed files with 11 additions and 4 deletions

View File

@@ -23,15 +23,19 @@ def get_session(request):
global secret_key
if not secret_key:
raise ValueError('The session secret key is not configured')
if hasattr(request.g, '_session'):
return request.g._session
session = request.cookies.get('session')
if session is None:
return {}
request.g._session = {}
return request.g._session
try:
session = jwt.decode(session, secret_key, algorithms=['HS256'])
except jwt.exceptions.PyJWTError: # pragma: no cover
raise
return {}
return session
request.g._session = {}
else:
request.g._session = session
return request.g._session
def update_session(request, session):

View File

@@ -19,6 +19,9 @@ class TestSession(unittest.TestCase):
@self.app.get('/')
def index(req):
session = get_session(req)
session2 = get_session(req)
session2['foo'] = 'bar'
self.assertEqual(session['foo'], 'bar')
return str(session.get('name'))
@self.app.get('/with')