diff --git a/VERSION b/VERSION index e416da33..8ffb2002 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.1.1 (2012-10-16 07:44:17) dev +Version 2.1.1 (2012-10-16 10:25:18) dev diff --git a/gluon/globals.py b/gluon/globals.py index dfa7481d..29a4deff 100644 --- a/gluon/globals.py +++ b/gluon/globals.py @@ -36,8 +36,9 @@ import os import sys import traceback import threading -import hmac -import base64 + +PAST = 'Sat, 1-Jan-1971 00:00:00' +FUTURE = 'Tue, 1-Dec-2999 23:59:59' try: from gluon.contrib.minify import minify @@ -523,7 +524,7 @@ class Session(Storage): else: response.session_id = None # do not try load the data from file is these was data in cookie - if response.session_id: #TODO and not session_cookie_data: + if response.session_id and not session_cookie_data: try: response.session_file = \ open(response.session_filename, 'rb+') @@ -591,7 +592,7 @@ class Session(Storage): if record_id == '0': raise Exception, 'record_id == 0' # Select from database - if True: # TODO: not session_cookie_data: + if not session_cookie_data: rows = db(table.id == record_id).select() # Make sure the session data exists in the database if len(rows) == 0 or rows[0].unique_key != unique_key: @@ -611,9 +612,12 @@ class Session(Storage): rcookies = response.cookies rcookies[response.session_id_name] = response.session_id rcookies[response.session_id_name]['path'] = '/' - # TODO: if not session data in cookie, delete seession_data_name cookie - #if session_cookie_data: - # rcookies[response.session_data_name] + # if not cookie_key, but session_data_name in cookies + # expire session_data_name from cookies + if session_cookie_data: + rcookies[response.session_data_name] = 'expired' + rcookies[response.session_data_name]['path'] = '/' + rcookies[response.session_data_name]['expires'] = PAST if self.flash: (response.flash, self.flash) = (self.flash, None) @@ -645,6 +649,7 @@ class Session(Storage): value = secure_dumps(dict(self),response.session_cookie_key) response.cookies[response.session_data_name] = value response.cookies[response.session_data_name]['path'] = '/' + response.cookies[response.session_data_name]['expires'] = FUTURE return True def _unchanged(self): diff --git a/gluon/utils.py b/gluon/utils.py index 9334ec1a..a160cc6e 100644 --- a/gluon/utils.py +++ b/gluon/utils.py @@ -116,6 +116,8 @@ def secure_dumps(data,encryption_key,hash_key=None): return signature+':'+encrypted_data def secure_loads(data,encryption_key,hash_key=None): + if not ':' in data: + return None if not hash_key: hash_key = hashlib.sha1(encryption_key).hexdigest() signature, encrypted_data = data.split(':',1)