Fixed #6082: file-based sessions now verify that SESSION_FILE_PATH is a valid storage location, and raise ImproperlyConfigured if not. Thanks, jags78.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@6889 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jacob Kaplan-Moss 2007-12-04 20:24:22 +00:00
parent 76dd53ac08
commit 602b7bca7a
1 changed files with 11 additions and 2 deletions

View File

@ -1,14 +1,23 @@
import os import os
import tempfile
from django.conf import settings from django.conf import settings
from django.contrib.sessions.backends.base import SessionBase from django.contrib.sessions.backends.base import SessionBase
from django.core.exceptions import SuspiciousOperation from django.core.exceptions import SuspiciousOperation, ImproperlyConfigured
class SessionStore(SessionBase): class SessionStore(SessionBase):
""" """
Implements a file based session store. Implements a file based session store.
""" """
def __init__(self, session_key=None): def __init__(self, session_key=None):
self.storage_path = settings.SESSION_FILE_PATH self.storage_path = getattr(settings, "SESSION_FILE_PATH", tempfile.gettempdir())
# Make sure the storage path is valid.
if not os.path.isdir(self.storage_path):
raise ImproperlyConfigured("The session storage path %r doesn't exist. "\
"Please set your SESSION_FILE_PATH setting "\
"to an existing directory in which Django "\
"can store session data." % self.storage_path)
self.file_prefix = settings.SESSION_COOKIE_NAME self.file_prefix = settings.SESSION_COOKIE_NAME
super(SessionStore, self).__init__(session_key) super(SessionStore, self).__init__(session_key)