Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 934

Show
Ignore:
Timestamp:
01/24/06 07:10:44
Author:
rdelon
Message:

Fix for #422, #412 and #289

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/filters/sessionfilter.py

    r932 r934  
    7878        sess.sessionLocking = conf('session_filter.locking', 'explicit') 
    7979        sess.onCreateSession = conf('session_filter.on_create_session', 
    80                                     lambda data: None) 
     80                lambda data: None) 
    8181        sess.onDeleteSession = conf('session_filter.on_delete_session', 
    82                                     lambda data: None) 
     82                lambda data: None) 
     83        sess.generate_session_id = conf('session_filter.on_delete_session', 
     84                generate_session_id) 
    8385         
    8486        cleanUpDelay = conf('session_filter.clean_up_delay', 5) 
     
    8688         
    8789        cookieName = conf('session_filter.cookie_name', 'sessionID') 
     90        cookieDomain = conf('session_filter.cookie_domain', None) 
     91        cookieSecure = conf('session_filter.cookie_secure', False) 
     92        cookiePath = conf('session_filter.cookie_path', None) 
     93 
     94        if cookiePath is None: 
     95            cookiePathHeader = conf('session_filter.cookie_path_from_header', None) 
     96            if cookiePathHeader is not None: 
     97                cookiePath = cherrypy.request.headerMap.get(cookiePathHeader, None) 
     98            if cookiePath is None: 
     99                cookiePath = '/' 
     100 
    88101        sess.deadlockTimeout = conf('session_filter.deadlock_timeout', 30) 
    89102         
     
    123136        else: 
    124137            # No sessionID yet 
    125             sess.sessionID = generateSessionID() 
     138            sess.sessionID = sess.generate_session_id() 
    126139            sess.sessionData = {'_id': sess.sessionID} 
    127140            sess.onCreateSession(sess.sessionData) 
     
    129142        cookie = cherrypy.response.simpleCookie 
    130143        cookie[cookieName] = sess.sessionID 
    131         cookie[cookieName]['path'] = '/' 
     144        cookie[cookieName]['path'] = cookiePath 
    132145        cookie[cookieName]['max-age'] = sess.sessionTimeout * 60 
    133146        cookie[cookieName]['version'] = 1 
     147        if cookieDomain is not None: 
     148            cookie[cookieName]['domain'] = cookieDomain 
     149        if cookieSecure is True: 
     150            cookie[cookieName]['secure'] = 1 
    134151     
    135152    def before_finalize(self): 
     
    376393 
    377394 
    378 def generateSessionID(): 
     395def generate_session_id(): 
    379396    """ Return a new sessionID """ 
    380397    return sha.new('%s' % random.random()).hexdigest() 

Hosted by WebFaction

Log in as guest/cpguest to create tickets