@@ -180,6 +180,7 @@ def __init__(self, request, id=None, invalidate_corrupt=False,
180
180
self .cookie_expires = cookie_expires
181
181
182
182
self ._set_serializer (data_serializer )
183
+ self .encode_base64 = False
183
184
184
185
# Default cookie domain/path
185
186
self .was_invalidated = False
@@ -340,7 +341,7 @@ def _get_path(self):
340
341
341
342
path = property (_get_path , _set_path )
342
343
343
- def _encrypt_data (self , session_data = None ):
344
+ def _serialize_data (self , session_data = None ):
344
345
"""Serialize, encipher, and base64 the session dict"""
345
346
session_data = session_data or self .copy ()
346
347
if self .encrypt_key :
@@ -352,11 +353,13 @@ def _encrypt_data(self, session_data=None):
352
353
self .crypto_module .getKeyLength ())
353
354
data = self .serializer .dumps (session_data )
354
355
return nonce + b64encode (self .crypto_module .aesEncrypt (data , encrypt_key ))
355
- else :
356
+ elif self . encode_base64 :
356
357
data = self .serializer .dumps (session_data )
357
358
return b64encode (data )
359
+ else :
360
+ return session_data
358
361
359
- def _decrypt_data (self , session_data ):
362
+ def _deserialize_data (self , session_data ):
360
363
"""Base64, decipher, then un-serialize the data for the session
361
364
dict"""
362
365
if self .encrypt_key :
@@ -368,10 +371,12 @@ def _decrypt_data(self, session_data):
368
371
self .crypto_module .getKeyLength ())
369
372
payload = b64decode (session_data [nonce_b64len :])
370
373
data = self .crypto_module .aesDecrypt (payload , encrypt_key )
371
- else :
374
+ return self .serializer .loads (data )
375
+ elif self .encode_base64 :
372
376
data = b64decode (session_data )
373
-
374
- return self .serializer .loads (data )
377
+ return self .serializer .loads (data )
378
+ else :
379
+ return session_data
375
380
376
381
def _delete_cookie (self ):
377
382
self .request ['set_cookie' ] = True
@@ -412,7 +417,7 @@ def load(self):
412
417
session_data = self .namespace ['session' ]
413
418
414
419
if session_data is not None :
415
- session_data = self ._decrypt_data (session_data )
420
+ session_data = self ._deserialize_data (session_data )
416
421
417
422
# Memcached always returns a key, its None when its not
418
423
# present
@@ -487,7 +492,7 @@ def save(self, accessed_only=False):
487
492
else :
488
493
data = dict (self .items ())
489
494
490
- data = self ._encrypt_data (data )
495
+ data = self ._serialize_data (data )
491
496
492
497
# Save the data
493
498
if not data and 'session' in self .namespace :
@@ -611,6 +616,7 @@ def __init__(self, request, key='beaker.session.id', timeout=None,
611
616
self .samesite = samesite
612
617
self .invalidate_corrupt = invalidate_corrupt
613
618
self ._set_serializer (data_serializer )
619
+ self .encode_base64 = True
614
620
615
621
try :
616
622
cookieheader = request ['cookie' ]
@@ -644,7 +650,7 @@ def __init__(self, request, key='beaker.session.id', timeout=None,
644
650
cookie_data = self .cookie [self .key ].value
645
651
if cookie_data is InvalidSignature :
646
652
raise BeakerException ("Invalid signature" )
647
- self .update (self ._decrypt_data (cookie_data ))
653
+ self .update (self ._deserialize_data (cookie_data ))
648
654
except Exception as e :
649
655
if self .invalidate_corrupt :
650
656
util .warn (
@@ -709,7 +715,7 @@ def _create_cookie(self):
709
715
self ['_id' ] = _session_id ()
710
716
self ['_accessed_time' ] = time .time ()
711
717
712
- val = self ._encrypt_data ()
718
+ val = self ._serialize_data ()
713
719
if len (val ) > 4064 :
714
720
raise BeakerException ("Cookie value is too long to store" )
715
721
0 commit comments