Skip to content
This repository has been archived by the owner on May 18, 2020. It is now read-only.

A reusable Django app that invalidates all active sessions after change password

License

Notifications You must be signed in to change notification settings

atugushev/django-password-session

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django Password Session

A reusable Django app that will invalidate all active sessions after change password.

Since Django 1.7 this feature implemented out of the box.

https://badge.fury.io/py/django-password-session.png https://api.travis-ci.org/atugushev/django-password-session.png https://coveralls.io/repos/atugushev/django-password-session/badge.png?branch=master

Installation

  1. Install a package.
$ pip install django-password-session
  1. Add "password_session" to your INSTALLED_APPS setting:
INSTALLED_APPS = (
    ...
    'password_session',
)
  1. Add middleware:
MIDDLEWARE_CLASSES = (
    ...
    'password_session.middleware.CheckPasswordHash',
),
  1. Make sure that you have the following settings:
INSTALLED_APPS = (
    ...
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
)

AUTHENTICATION_BACKENDS = (
    ...
    'django.contrib.auth.backends.ModelBackend',
)

MIDDLEWARE_CLASSES = (
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
)
  1. To avoid logging out a user from a current session you should update the session by calling the following function directly after change a password:
from password_session import update_session_auth_hash
update_session_auth_hash(request, user)

Example view

It's a very simple view for change password just for demonstrating how to update a current session.

from django.contrib.auth.decorators import login_required
from django.http import HttpResponse

from password_session import update_session_auth_hash


def change_password_view(request):
    user = request.user
    user.set_password(request.POST.get('password'))
    user.save()
    update_session_auth_hash(request, user)
    return HttpResponse("Hello, %s! Your password has been changed!" % user.username)

Requirements

  • Python 2.6+ or 3+
  • Django>=1.3,<1.7

About

A reusable Django app that invalidates all active sessions after change password

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages