customizable session cookie expriration
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.1.1 (2012-10-16 11:14:48) dev
|
Version 2.1.1 (2012-10-16 11:23:37) dev
|
||||||
|
|||||||
+12
-7
@@ -37,6 +37,7 @@ import sys
|
|||||||
import traceback
|
import traceback
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
FMT = '%a, %d-%b-%Y %H:%M:%S PST'
|
||||||
PAST = 'Sat, 1-Jan-1971 00:00:00'
|
PAST = 'Sat, 1-Jan-1971 00:00:00'
|
||||||
FUTURE = 'Tue, 1-Dec-2999 23:59:59'
|
FUTURE = 'Tue, 1-Dec-2999 23:59:59'
|
||||||
|
|
||||||
@@ -468,7 +469,7 @@ class Session(Storage):
|
|||||||
separate = None,
|
separate = None,
|
||||||
check_client=False,
|
check_client=False,
|
||||||
cookie_key=None,
|
cookie_key=None,
|
||||||
cookie_expires=FUTURE,
|
cookie_expires=None,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
separate can be separate=lambda(session_name): session_name[-2:]
|
separate can be separate=lambda(session_name): session_name[-2:]
|
||||||
@@ -484,6 +485,7 @@ class Session(Storage):
|
|||||||
masterapp = request.application
|
masterapp = request.application
|
||||||
response.session_id_name = 'session_id_%s' % masterapp.lower()
|
response.session_id_name = 'session_id_%s' % masterapp.lower()
|
||||||
response.session_data_name = 'session_data_%s' % masterapp.lower()
|
response.session_data_name = 'session_data_%s' % masterapp.lower()
|
||||||
|
response.session_cookie_expires = cookie_expires
|
||||||
|
|
||||||
# Load session data from cookie
|
# Load session data from cookie
|
||||||
cookies = request.cookies
|
cookies = request.cookies
|
||||||
@@ -505,7 +507,6 @@ class Session(Storage):
|
|||||||
if cookie_key:
|
if cookie_key:
|
||||||
response.session_storage_type = 'cookie'
|
response.session_storage_type = 'cookie'
|
||||||
response.session_cookie_key = cookie_key
|
response.session_cookie_key = cookie_key
|
||||||
response.session_data_expires = cookie_expires
|
|
||||||
if session_cookie_data:
|
if session_cookie_data:
|
||||||
data = secure_loads(session_cookie_data,cookie_key)
|
data = secure_loads(session_cookie_data,cookie_key)
|
||||||
if data:
|
if data:
|
||||||
@@ -614,6 +615,8 @@ class Session(Storage):
|
|||||||
rcookies = response.cookies
|
rcookies = response.cookies
|
||||||
rcookies[response.session_id_name] = response.session_id
|
rcookies[response.session_id_name] = response.session_id
|
||||||
rcookies[response.session_id_name]['path'] = '/'
|
rcookies[response.session_id_name]['path'] = '/'
|
||||||
|
if cookie_expires:
|
||||||
|
rcookies[response.session_id_name]['expires'] = cookie_expires.strftime(FMT)
|
||||||
# if not cookie_key, but session_data_name in cookies
|
# if not cookie_key, but session_data_name in cookies
|
||||||
# expire session_data_name from cookies
|
# expire session_data_name from cookies
|
||||||
if session_cookie_data:
|
if session_cookie_data:
|
||||||
@@ -648,13 +651,15 @@ class Session(Storage):
|
|||||||
|
|
||||||
def _try_store_in_cookie(self, request, response):
|
def _try_store_in_cookie(self, request, response):
|
||||||
if response.session_storage_type!='cookie': return False
|
if response.session_storage_type!='cookie': return False
|
||||||
|
name = response.session_data_name
|
||||||
value = secure_dumps(dict(self),response.session_cookie_key)
|
value = secure_dumps(dict(self),response.session_cookie_key)
|
||||||
response.cookies.pop(response.session_data_name,None)
|
expires = response.session_cookie_expires
|
||||||
response.cookies[response.session_data_name] = value
|
rcookies = response.cookies
|
||||||
response.cookies[response.session_data_name]['path'] = '/'
|
rcookies.pop(name,None)
|
||||||
expires = response.session_data_expires
|
rcookies[name] = value
|
||||||
|
rcookies[name]['path'] = '/'
|
||||||
if expires:
|
if expires:
|
||||||
response.cookies[response.session_data_name]['expires'] = expires
|
rcookies[name]['expires'] = expires.strftime(FMT)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _unchanged(self):
|
def _unchanged(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user