0

I have a Django application (domain name: app.com) that allows users to create a template and host it on a subdomain (example.app.com) using the Django sites framework.

Using this option:

SESSION_COOKIE_DOMAIN=".app.com"

The sites under this domain share the same session but once the user hosts the template on his domain name (custom.com) each site has its own session.

Is it possible to make all the sites of this Django application share the same session?

Why?

So I don't have to log in again each time I visit one of these websites.

I tried this middleware but still not working.

import time

from django.conf import settings
from django.utils.cache import patch_vary_headers
from django.utils.http import http_date
from django.contrib.sessions.middleware import SessionMiddleware

class SessionHostDomainMiddleware(SessionMiddleware):
    def process_response(self, request, response):
        """
        If request.session was modified, or if the configuration is to save the
        session every time, save the changes and set a session cookie.
        """
        try:
            accessed = request.session.accessed
            modified = request.session.modified
        except AttributeError:
            pass
        else:
            if accessed:
                patch_vary_headers(response, ('Cookie',))
            if modified or settings.SESSION_SAVE_EVERY_REQUEST:
                if request.session.get_expire_at_browser_close():
                    max_age = None
                    expires = None
                else:
                    max_age = request.session.get_expiry_age()
                    expires_time = time.time() + max_age
                    expires = http_date(expires_time)
                # Save the session data and refresh the client cookie.
                # Skip session save for 500 responses, refs #3881.
                if response.status_code != 500:
                    request.session.save()
                    host = request.get_host().split(':')[0]
                    response.set_cookie(settings.SESSION_COOKIE_NAME,
                            request.session.session_key, max_age=max_age,
                            expires=expires, domain=host,
                            path=settings.SESSION_COOKIE_PATH,
                            secure=settings.SESSION_COOKIE_SECURE or None,
                            httponly=settings.SESSION_COOKIE_HTTPONLY or None)
        return response

I appreciate your help.

cool mann
  • 11
  • 3
  • Does this answer your question? [How to create a Shared Login Service across Multiple Domains?](https://stackoverflow.com/questions/4306728/how-to-create-a-shared-login-service-across-multiple-domains) – Abdul Aziz Barkat May 11 '22 at 16:52

0 Answers0