app/django/contrib/sessions/middleware.py
changeset 54 03e267d67478
child 323 ff1a9aa48cfd
equal deleted inserted replaced
53:57b4279d8c4e 54:03e267d67478
       
     1 import time
       
     2 
       
     3 from django.conf import settings
       
     4 from django.utils.cache import patch_vary_headers
       
     5 from django.utils.http import cookie_date
       
     6 
       
     7 TEST_COOKIE_NAME = 'testcookie'
       
     8 TEST_COOKIE_VALUE = 'worked'
       
     9 
       
    10 class SessionMiddleware(object):
       
    11 
       
    12     def process_request(self, request):
       
    13         engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
       
    14         session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
       
    15         request.session = engine.SessionStore(session_key)
       
    16 
       
    17     def process_response(self, request, response):
       
    18         # If request.session was modified, or if response.session was set, save
       
    19         # those changes and set a session cookie.
       
    20         try:
       
    21             accessed = request.session.accessed
       
    22             modified = request.session.modified
       
    23         except AttributeError:
       
    24             pass
       
    25         else:
       
    26             if accessed:
       
    27                 patch_vary_headers(response, ('Cookie',))
       
    28             if modified or settings.SESSION_SAVE_EVERY_REQUEST:
       
    29                 if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
       
    30                     max_age = None
       
    31                     expires = None
       
    32                 else:
       
    33                     max_age = settings.SESSION_COOKIE_AGE
       
    34                     expires_time = time.time() + settings.SESSION_COOKIE_AGE
       
    35                     expires = cookie_date(expires_time)
       
    36                 # Save the seesion data and refresh the client cookie.
       
    37                 request.session.save()
       
    38                 response.set_cookie(settings.SESSION_COOKIE_NAME,
       
    39                         request.session.session_key, max_age=max_age,
       
    40                         expires=expires, domain=settings.SESSION_COOKIE_DOMAIN,
       
    41                         path=settings.SESSION_COOKIE_PATH,
       
    42                         secure=settings.SESSION_COOKIE_SECURE or None)
       
    43 
       
    44         return response