Django

Code

Changeset 3049

Show
Ignore:
Timestamp:
06/01/06 17:25:06 (2 years ago)
Author:
adrian
Message:

Fixed #395 -- Added SESSION_EXPIRE_AT_BROWSER_CLOSE setting, which regulates whether session framework should use browser-session-length cookies.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/conf/global_settings.py

    r2980 r3049  
    236236SESSION_COOKIE_DOMAIN = None              # A string like ".lawrence.com", or None for standard domain cookie. 
    237237SESSION_SAVE_EVERY_REQUEST = False        # Whether to save the session data on every request. 
     238SESSION_EXPIRE_AT_BROWSER_CLOSE = False   # Whether sessions expire when a user closes his browser. 
    238239 
    239240######### 
  • django/trunk/django/contrib/sessions/middleware.py

    r2809 r3049  
    8080            if modified or settings.SESSION_SAVE_EVERY_REQUEST: 
    8181                session_key = request.session.session_key or Session.objects.get_new_session_key() 
     82                if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE: 
     83                    max_age = None 
     84                    expires = None 
     85                else: 
     86                    max_age = settings.SESSION_COOKIE_AGE 
     87                    expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE), "%a, %d-%b-%Y %H:%M:%S GMT") 
    8288                new_session = Session.objects.save(session_key, request.session._session, 
    8389                    datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE)) 
    84                 expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE), "%a, %d-%b-%Y %H:%M:%S GMT") 
    8590                response.set_cookie(settings.SESSION_COOKIE_NAME, session_key, 
    86                     max_age=settings.SESSION_COOKIE_AGE, expires=expires, domain=settings.SESSION_COOKIE_DOMAIN) 
     91                    max_age=max_age, expires=expires, domain=settings.SESSION_COOKIE_DOMAIN) 
    8792        return response 
  • django/trunk/docs/sessions.txt

    r2980 r3049  
    198198session cookie is sent. 
    199199 
     200Browser-length sessions vs. persistent sessions 
     201=============================================== 
     202 
     203You can control whether the session framework uses browser-length sessions vs. 
     204persistent sessions with the ``SESSION_EXPIRE_AT_BROWSER_CLOSE`` setting. 
     205 
     206By default, ``SESSION_EXPIRE_AT_BROWSER_CLOSE`` is set to ``False``, which 
     207means session cookies will be stored in users' browsers for as long as 
     208``SESSION_COOKIE_AGE``. Use this if you don't want people to have to log in 
     209every time they open a browser. 
     210 
     211If ``SESSION_EXPIRE_AT_BROWSER_CLOSE`` is set to ``True``, Django will use 
     212browser-length cookies -- cookies that expire as soon as the user closes his or 
     213her browser. Use this if you want people to have to log in every time they open 
     214a browser. 
     215 
    200216Settings 
    201217======== 
     
    225241 
    226242The name of the cookie to use for sessions. This can be whatever you want. 
     243 
     244SESSION_EXPIRE_AT_BROWSER_CLOSE 
     245------------------------------- 
     246 
     247Default: ``False`` 
     248 
     249Whether to expire the session when the user closes his or her browser. See 
     250"Browser-length sessions vs. persistent sessions" above. 
    227251 
    228252SESSION_SAVE_EVERY_REQUEST 
  • django/trunk/docs/settings.txt

    r2958 r3049  
    604604See the `session docs`_. 
    605605 
     606SESSION_EXPIRE_AT_BROWSER_CLOSE 
     607------------------------------- 
     608 
     609Default: ``False`` 
     610 
     611Whether to expire the session when the user closes his or her browser. 
     612See the `session docs`_. 
     613 
    606614SESSION_SAVE_EVERY_REQUEST 
    607615--------------------------