Skip to content

Instantly share code, notes, and snippets.

@githubutilities
Last active November 26, 2015 05:22
Show Gist options
  • Select an option

  • Save githubutilities/acab7deab90a01bba3e2 to your computer and use it in GitHub Desktop.

Select an option

Save githubutilities/acab7deab90a01bba3e2 to your computer and use it in GitHub Desktop.
Django Middleware

Django Middleware

SessionMiddle Tutor

  • create company/middleware/SessionMiddleware.py
from django.conf import settings
from django.contrib.sessions.middleware import SessionMiddleware

from importlib import import_module


class SessionMiddleware(SessionMiddleware):
    def process_request(self, request):
        engine = import_module(settings.SESSION_ENGINE)
        session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)

        if session_key is None:
            form = {}
            if request.method == 'GET':
                form = request.GET
            elif request.method == 'POST':
                form = request.POST
            session_key = form.get("sessionid", None)

        request.session = engine.SessionStore(session_key)
        if not request.session.exists(request.session.session_key):
            print "creating"
            request.session.create()
  • add company.middleware.SessionMiddleware to MIDDLEWARE_CLASSES of your project settings.py
MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    # Above are django standard middlewares

    'company.middleware.SessionMiddleware',
)

AuthenticationMiddleware

from django.contrib.auth.middleware import AuthenticationMiddleware
from django.http import HttpResponseRedirect


class AuthenticationMiddleware(AuthenticationMiddleware):
    def process_request(self, request):
        path = request.get_full_path()

        if path.startswith('/admin'):
            if not request.user.is_authenticated():
                return HttpResponseRedirect('/login')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment