Skip to main content

Identify the Django Session by a Header

Project description

Django Session Header: Identify the session through a header

There are some situations where the browser may not allow any cookies at all to be used. In those cases, we would like to be able to fall back to something that is both secure, and capable. This package allows you to manually pass the sessionid using a header, so that you can continue to use Django’s excellent session management.

It extends Django’s built-in sessions to support sessions in places where cookies are not allowed. For most views, the handling will be seamless. Those that need to have sessions that persist despite the absence of cookies, there are a few extra features.

Usage

First, install the package.

pip install django-session-header

Replace django.contrib.sessions.middleware.SessionMiddleware in your settings.py with the following:

MIDDLEWARE_CLASSES = [
   # ...
   # 'django.contrib.session.middleware.SessionMiddleware',
   'django_session_header.middleware.SessionMiddleware',
]

And replace the Django Rest Framework SessionAuthentication class with django_session_header.authentication.SessionAuthentication:

REST_FRAMEWORK = {
    'DEFAUlT_AUTHENTICATION_CLASSES': [
        # ...
        # 'rest_framework.authentication.SessionAuthentication',
        'django_session_header.authentication.SessionAuthentication',
    ]
}

If a session was obtained via a session header, then request.session.csrf_exempt will be True. You can use this to conditionally apply CSRF protection. Or, if you prefer, you can replace Django’s normal CSRF middleware with django_session_header.middleware.CsrfViewMiddleware:

MIDDLEWARE_CLASSES = [
    # ...
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django_session_header.middleware.CsrfViewMiddleware',
]

The sessionid will be available in the X-SessionID response header, and you can now set the X-SessionID header on the request manually to avoid needing cookies to power your sessions.

Project details


Release history Release notifications | RSS feed

This version

1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-session-header-1.0.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

django_session_header-1.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file django-session-header-1.0.tar.gz.

File metadata

  • Download URL: django-session-header-1.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0a2 CPython/3.6.6 Linux/4.18.0-16-generic

File hashes

Hashes for django-session-header-1.0.tar.gz
Algorithm Hash digest
SHA256 dcbffc01d21ffcf22344529142d320300f76d7de7d14ff2e9b29b830b5a6c54b
MD5 c8e7b791c58895d32f5a564625443c77
BLAKE2b-256 3455bea72634c423822c80b8142a68e1ffc5a5067c62e398546833ef3a6d2684

See more details on using hashes here.

File details

Details for the file django_session_header-1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_session_header-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 683c940c8b2550a2ccf45ab58def563921f14ecb307746960b03ea3cac6b0f57
MD5 f86f7dcd45a1c5f2ef51a69e5cd810c7
BLAKE2b-256 f17b65ec8d807c4d9d5bda1b4626e5dc5d5aeab8dc1577c83de6ea32bd2f0b4a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page