Skip to content

Instantly share code, notes, and snippets.

@pindia
Last active February 27, 2017 23:09
Show Gist options
  • Save pindia/9b7787a607a5a676c6d8 to your computer and use it in GitHub Desktop.
Save pindia/9b7787a607a5a676c6d8 to your computer and use it in GitHub Desktop.
Django session cookie migration
# Read more at http://www.pindi.us/blog/migrating-cross-domain-cookies-django
from django.conf import settings
from importlib import import_module
class UpdateSessionCookieMiddleware(object):
"""
Migrates session data from an old (hardcoded) session cookie name and domain to the name and
domain currently defined in the Django settings.
Should be placed after SessionMiddleware but before any middleware that uses request.session.
"""
def process_request(self, request):
session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
if session_key is None:
old_session_key = request.COOKIES.get('sessionid', None)
if old_session_key:
engine = import_module(settings.SESSION_ENGINE)
old_session = engine.SessionStore(old_session_key)
for key, value in old_session.items():
request.session[key] = value
request.session.save()
def process_response(self, response):
response.delete_cookie('sessionid', domain='www.getstudyroom.com')
@chris-martin
Copy link

Shouldn't process_response(self, response) be process_response(self, request, response)? (see my fork)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment