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

Changeset 396

Show
Ignore:
Timestamp:
06/30/05 19:51:14
Author:
mikerobi
Message:

sessionfilter bugfix

Files:

Legend:

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

    r395 r396  
    6464    'sessionFilter.default.storageType' : 'ram', 
    6565    'sessionFilter.default.cookiePrefix': 'CherryPySession', 
    66     'sessionFilter.default.storageFileDir': '.sessionFiles' 
     66    'sessionFilter.default.storagePath': '.sessionFiles' 
    6767    } 
    6868 
  • trunk/cherrypy/lib/filter/sessionfilter/__init__.py

    r395 r396  
    5858             
    5959            # check for custom storage adaptors 
    60             adaptors = cpg.config.get('sessionFilter.storageAdaptors') 
     60            adaptors = cherrypy.config.get('sessionFilter.storageAdaptors') 
    6161            try: 
    6262                storageAdaptor = adaptors[storageType] 
     
    117117         
    118118        for sessionManager in self.__getSessions(): 
    119             sessionName = sessionManager.sessionName 
    120             sessionKey = sessionKeys.get(sessionName, None) 
     119            sessionKey = sessionKeys.get(sessionManager.name, None) 
    121120             
    122121            try: 
     
    136135         
    137136        for sessionManager in self.__getSessions(): 
    138             sessionName = sessionManager.sessionName 
    139              
    140             cookiePrefix = sessionconfig.retrieve('cookiePrefix', sessionName, None) 
    141             cookieName = '%s_%s_%i' % (cookiePrefix, sessionName, hash(sessionManager)) 
    142              
     137            sessionName = sessionManager.name 
     138            cookieName  = sessionManager.cookieName 
     139 
    143140            try: 
    144141                sessionKeys[sessionName] = cherrypy.request.simpleCookie[cookieName].value 
     
    152149        """ 
    153150         
    154         sessionName = sessionManager.sessionName 
     151        sessionName = sessionManager.name 
     152        cookieName  = sessionManager.cookieName 
    155153         
    156         cookiePrefix = sessionconfig.retrieve('cookiePrefix', sessionName, None) 
    157         cookieName = '%s_%s_%i' % (cookiePrefix, sessionName, hash(sessionManager)) 
    158          
    159         cherrypy.response.simpleCookie[cookieName] = sessionKey 
    160         cherrypy.response.simpleCookie[cookieName]['version'] = 1 
    161154         
    162155        # if we do not have a manually defined cookie path use path where the session 
    163156        # manager was defined 
    164         cookiePath = sessionconfig.retrieve('cookiePath', sessionManager.sessionName, sessionManager.path) 
     157        cookiePath = sessionconfig.retrieve('cookiePath', sessionManager.name, sessionManager.path) 
     158        timeout = sessionconfig.retrieve('timeout', sessionManager.name) 
    165159         
     160        cherrypy.response.simpleCookie[cookieName] = sessionKey 
    166161        cherrypy.response.simpleCookie[cookieName]['path'] = cookiePath 
    167      
     162        cherrypy.response.simpleCookie[cookieName]['max-age'] = timeout*60 
     163         
    168164    def __saveSessions(self): 
    169165         
    170166        for sessionManager in self.__getSessions(): 
    171             sessionName = sessionManager.sessionName 
     167            sessionName = sessionManager.name 
    172168             
    173169            sessionData = getattr(cherrypy.sessions, sessionName) 
     
    177173            sessionManager.lastCleanUp = time.time() 
    178174             
    179             cleanUpDelay = sessionconfig.retrieve('cleanUpDelay', sessionManager.sessionName) 
     175            cleanUpDelay = sessionconfig.retrieve('cleanUpDelay', sessionManager.name) 
    180176            now = time.time() 
    181177            lastCleanUp = sessionManager.lastCleanUp 
  • trunk/cherrypy/lib/filter/sessionfilter/basesession.py

    r395 r396  
    6767    def generateSessionKey(self): 
    6868        """ Function to return a new sessioId """ 
    69         sessionKeyFunc = sessionconfig.retrieve('keyGenerator', self.sessionName, None) 
     69        sessionKeyFunc = sessionconfig.retrieve('keyGenerator', self.name, None) 
    7070         
    7171        if sessionKeyFunc: 
    72             from cherrypy import _cputil 
    73             newKey = _cputil.getSpecialAttribute(sessionKeyFunc)() 
     72            newKey = sessionKeyFunc() 
    7473        else: 
    75             newKey = sha.new('%s%s' % (time.time(), random.random())).hexdigest() 
     74            newKey = sha.new('%s' % random.random()).hexdigest() 
    7675         
    7776        return newKey 
     
    8584         
    8685        self.__sessionCache = {} 
    87         self.sessionName = sessionName 
     86        self.name = sessionName 
    8887         
    8988        #set the path 
    9089        self.path = sessionPath 
    91          
    9290 
    9391        # the session is born clean 
    9492        self.lastCleanUp = time.time() 
    95      
     93         
     94        # find the cookie name 
     95        cookiePrefix = sessionconfig.retrieve('cookiePrefix', sessionName, None) 
     96        self.cookieName = '%s_%s_%i' % (cookiePrefix, sessionName, hash(sessionPath)) 
     97            
    9698     
    9799    # there should never be a reason to modify the remaining functions, they used  
     
    101103      return {  
    102104               'timestamp'  : int(time.time()), 
    103                'timeout'    : sessionconfig.retrieve('timeout', self.sessionName) * 60, 
     105               'timeout'    : sessionconfig.retrieve('timeout', self.name) * 60, 
    104106               'lastAccess' : int(time.time()), 
    105                'key' : self.generateSessionKey() 
     107               'key'        : self.generateSessionKey() 
    106108             } 
    107109        
     
    116118            session.threadCount += 1 
    117119            self.__sessionCache[sessionKey] = session 
    118          
    119         setattr(cherrypy.sessions, self.sessionName, session) 
     120     
     121        session.cookieName = self.cookieName 
     122        setattr(cherrypy.sessions, self.name, session) 
    120123     
    121124    def createSession(self): 
     
    132135        self.setSession(session) 
    133136         
    134         cacheTimeout = sessionconfig.retrieve('cacheTimeout',  self.sessionName, None) 
     137        cacheTimeout = sessionconfig.retrieve('cacheTimeout',  self.name, None) 
    135138         
    136139        if session.threadCount == 0 and (self.noCache or not cacheTimeout): 
     
    140143        """ cleanup all inactive sessions """ 
    141144         
    142         cacheTimeout = sessionconfig.retrieve('cacheTimeout',  self.sessionName, None) 
     145        cacheTimeout = sessionconfig.retrieve('cacheTimeout',  self.name, None) 
    143146         
    144147        # don't waste cycles if we aren't caching inactive sessions 
  • trunk/cherrypy/lib/filter/sessionfilter/fileadaptor.py

    r395 r396  
    5656            raise SessionNotFoundError 
    5757         
    58         storageDir = sessionconfig.retrieve('storageFileDir', self.sessionName)        
    59         fileName = '%s_%i-%s' % (self.sessionName, hash(self), sessionKey) 
     58        storageDir = sessionconfig.retrieve('storagePath', self.name)  
     59        fileName = '%s_%i-%s' % (self.name, hash(self), sessionKey) 
    6060        filePath = os.path.join(storageDir, fileName) 
    6161         
     
    7272    def setSession(self, sessionData): 
    7373     
    74         storageDir = sessionconfig.retrieve('storageFileDir', self.sessionName)        
     74        storageDir = sessionconfig.retrieve('storagePath', self.sessionName)   
    7575        fileName = '%s_%i-%s' % (self.sessionName, hash(self), sessionData.key) 
    7676        filePath = os.path.join(storageDir, fileName) 
     
    8383 
    8484    def delSession(self, sessionKey): 
    85         storageDir = sessionconfig.retrieve('storageFileDir', self.sessionName)        
     85        storageDir = sessionconfig.retrieve('storagePath', self.sessionName)   
    8686        fileName = '%s_%i-%s' % (self.sessionName, hash(self), sessionKey) 
    8787        filePath = os.path.join(storageDir, fileName) 
  • trunk/cherrypy/tutorial/tut09_sessionfilter.py

    r392 r396  
    1818 
    1919    # this is just a primative template function 
    20     def __examplePage(self, poweredBy, count, links, sessionKey): 
     20    def __examplePage(self, poweredBy, count, links, sessionKey, cookieName): 
    2121        yield '<html><head><title>sessionFilter example</title><body>\n' 
    2222        yield 'This page uses %s based session storage.<br/>\n' % poweredBy 
     
    2525            yield '<a href="/%s">%s</a>&nbsp;&nbsp;\n' % (link, link) 
    2626 
    27         yield '<br/><br/>The Current SessionKey is: &nbsp;&nbsp;\n' 
     27        yield '<br/><br/>The Current session key is: &nbsp;&nbsp;\n' 
    2828        yield sessionKey 
     29        yield '<br/>The Current cookie name is: &nbsp;&nbsp;\n' 
     30        yield cookieName 
    2931        yield '\n</body></html>' 
    3032 
     
    4648        # And display a silly hit count message! 
    4749        key = cherrypy.sessions.default.key 
    48         return self.__examplePage('ram', count, self.samplePages, key) 
     50        cookieName = cherrypy.sessions.default.cookieName 
     51        return self.__examplePage('ram', count, self.samplePages, key, cookieName) 
    4952 
    5053    index.exposed = True 
     
    5962         
    6063        key = cherrypy.sessions.admin.key 
    61         return self.__examplePage('ram', adminCount, self.samplePages, key) 
     64        cookieName = cherrypy.sessions.admin.cookieName 
     65        return self.__examplePage('ram', adminCount, self.samplePages, key, cookieName) 
    6266     
    6367    admin.exposed = True 
     
    7377         
    7478        key = cherrypy.sessions.forum.key 
    75         return self.__examplePage('ram', forumCount, self.samplePages, key) 
     79 
     80        cookieName = cherrypy.sessions.forum.cookieName 
     81        return self.__examplePage('ram', forumCount, self.samplePages, key, cookieName) 
    7682     
    7783    forum.exposed=True 

Hosted by WebFaction

Log in as guest/cpguest to create tickets