Changeset 396
- Timestamp:
- 06/30/05 19:51:14
- Files:
-
- trunk/cherrypy/config.py (modified) (1 diff)
- trunk/cherrypy/lib/filter/sessionfilter/__init__.py (modified) (5 diffs)
- trunk/cherrypy/lib/filter/sessionfilter/basesession.py (modified) (6 diffs)
- trunk/cherrypy/lib/filter/sessionfilter/fileadaptor.py (modified) (3 diffs)
- trunk/cherrypy/tutorial/tut09_sessionfilter.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cherrypy/config.py
r395 r396 64 64 'sessionFilter.default.storageType' : 'ram', 65 65 'sessionFilter.default.cookiePrefix': 'CherryPySession', 66 'sessionFilter.default.storage FileDir': '.sessionFiles'66 'sessionFilter.default.storagePath': '.sessionFiles' 67 67 } 68 68 trunk/cherrypy/lib/filter/sessionfilter/__init__.py
r395 r396 58 58 59 59 # check for custom storage adaptors 60 adaptors = c pg.config.get('sessionFilter.storageAdaptors')60 adaptors = cherrypy.config.get('sessionFilter.storageAdaptors') 61 61 try: 62 62 storageAdaptor = adaptors[storageType] … … 117 117 118 118 for sessionManager in self.__getSessions(): 119 sessionName = sessionManager.sessionName 120 sessionKey = sessionKeys.get(sessionName, None) 119 sessionKey = sessionKeys.get(sessionManager.name, None) 121 120 122 121 try: … … 136 135 137 136 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 143 140 try: 144 141 sessionKeys[sessionName] = cherrypy.request.simpleCookie[cookieName].value … … 152 149 """ 153 150 154 sessionName = sessionManager.sessionName 151 sessionName = sessionManager.name 152 cookieName = sessionManager.cookieName 155 153 156 cookiePrefix = sessionconfig.retrieve('cookiePrefix', sessionName, None)157 cookieName = '%s_%s_%i' % (cookiePrefix, sessionName, hash(sessionManager))158 159 cherrypy.response.simpleCookie[cookieName] = sessionKey160 cherrypy.response.simpleCookie[cookieName]['version'] = 1161 154 162 155 # if we do not have a manually defined cookie path use path where the session 163 156 # 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) 165 159 160 cherrypy.response.simpleCookie[cookieName] = sessionKey 166 161 cherrypy.response.simpleCookie[cookieName]['path'] = cookiePath 167 162 cherrypy.response.simpleCookie[cookieName]['max-age'] = timeout*60 163 168 164 def __saveSessions(self): 169 165 170 166 for sessionManager in self.__getSessions(): 171 sessionName = sessionManager. sessionName167 sessionName = sessionManager.name 172 168 173 169 sessionData = getattr(cherrypy.sessions, sessionName) … … 177 173 sessionManager.lastCleanUp = time.time() 178 174 179 cleanUpDelay = sessionconfig.retrieve('cleanUpDelay', sessionManager. sessionName)175 cleanUpDelay = sessionconfig.retrieve('cleanUpDelay', sessionManager.name) 180 176 now = time.time() 181 177 lastCleanUp = sessionManager.lastCleanUp trunk/cherrypy/lib/filter/sessionfilter/basesession.py
r395 r396 67 67 def generateSessionKey(self): 68 68 """ Function to return a new sessioId """ 69 sessionKeyFunc = sessionconfig.retrieve('keyGenerator', self. sessionName, None)69 sessionKeyFunc = sessionconfig.retrieve('keyGenerator', self.name, None) 70 70 71 71 if sessionKeyFunc: 72 from cherrypy import _cputil 73 newKey = _cputil.getSpecialAttribute(sessionKeyFunc)() 72 newKey = sessionKeyFunc() 74 73 else: 75 newKey = sha.new('%s %s' % (time.time(), random.random())).hexdigest()74 newKey = sha.new('%s' % random.random()).hexdigest() 76 75 77 76 return newKey … … 85 84 86 85 self.__sessionCache = {} 87 self. sessionName = sessionName86 self.name = sessionName 88 87 89 88 #set the path 90 89 self.path = sessionPath 91 92 90 93 91 # the session is born clean 94 92 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 96 98 97 99 # there should never be a reason to modify the remaining functions, they used … … 101 103 return { 102 104 'timestamp' : int(time.time()), 103 'timeout' : sessionconfig.retrieve('timeout', self. sessionName) * 60,105 'timeout' : sessionconfig.retrieve('timeout', self.name) * 60, 104 106 'lastAccess' : int(time.time()), 105 'key' : self.generateSessionKey()107 'key' : self.generateSessionKey() 106 108 } 107 109 … … 116 118 session.threadCount += 1 117 119 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) 120 123 121 124 def createSession(self): … … 132 135 self.setSession(session) 133 136 134 cacheTimeout = sessionconfig.retrieve('cacheTimeout', self. sessionName, None)137 cacheTimeout = sessionconfig.retrieve('cacheTimeout', self.name, None) 135 138 136 139 if session.threadCount == 0 and (self.noCache or not cacheTimeout): … … 140 143 """ cleanup all inactive sessions """ 141 144 142 cacheTimeout = sessionconfig.retrieve('cacheTimeout', self. sessionName, None)145 cacheTimeout = sessionconfig.retrieve('cacheTimeout', self.name, None) 143 146 144 147 # don't waste cycles if we aren't caching inactive sessions trunk/cherrypy/lib/filter/sessionfilter/fileadaptor.py
r395 r396 56 56 raise SessionNotFoundError 57 57 58 storageDir = sessionconfig.retrieve('storage FileDir', 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) 60 60 filePath = os.path.join(storageDir, fileName) 61 61 … … 72 72 def setSession(self, sessionData): 73 73 74 storageDir = sessionconfig.retrieve('storage FileDir', self.sessionName)74 storageDir = sessionconfig.retrieve('storagePath', self.sessionName) 75 75 fileName = '%s_%i-%s' % (self.sessionName, hash(self), sessionData.key) 76 76 filePath = os.path.join(storageDir, fileName) … … 83 83 84 84 def delSession(self, sessionKey): 85 storageDir = sessionconfig.retrieve('storage FileDir', self.sessionName)85 storageDir = sessionconfig.retrieve('storagePath', self.sessionName) 86 86 fileName = '%s_%i-%s' % (self.sessionName, hash(self), sessionKey) 87 87 filePath = os.path.join(storageDir, fileName) trunk/cherrypy/tutorial/tut09_sessionfilter.py
r392 r396 18 18 19 19 # this is just a primative template function 20 def __examplePage(self, poweredBy, count, links, sessionKey ):20 def __examplePage(self, poweredBy, count, links, sessionKey, cookieName): 21 21 yield '<html><head><title>sessionFilter example</title><body>\n' 22 22 yield 'This page uses %s based session storage.<br/>\n' % poweredBy … … 25 25 yield '<a href="/%s">%s</a> \n' % (link, link) 26 26 27 yield '<br/><br/>The Current SessionKey is: \n'27 yield '<br/><br/>The Current session key is: \n' 28 28 yield sessionKey 29 yield '<br/>The Current cookie name is: \n' 30 yield cookieName 29 31 yield '\n</body></html>' 30 32 … … 46 48 # And display a silly hit count message! 47 49 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) 49 52 50 53 index.exposed = True … … 59 62 60 63 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) 62 66 63 67 admin.exposed = True … … 73 77 74 78 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) 76 82 77 83 forum.exposed=True

