一个可重用的django应用程序,更改密码后将使所有活动会话失效。
django-password-session的Python项目详细描述
一个可重用的django应用程序,更改密码后将使所有活动会话失效。
自django 1.7以来,此功能实现了out of the box。
安装
- 安装软件包。
$ pip install django-password-session
- 将“密码会话”添加到已安装的应用程序设置中:
INSTALLED_APPS=(...'password_session',)
- 添加中间件:
MIDDLEWARE_CLASSES=(...'password_session.middleware.CheckPasswordHash',),
- 确保您有以下设置:
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',)
- 要避免从当前会话中注销用户,应在更改密码后直接调用以下函数来更新会话:
frompassword_sessionimportupdate_session_auth_hashupdate_session_auth_hash(request,user)
示例视图
这是一个非常简单的修改密码的视图,只是为了演示如何更新当前会话。
fromdjango.contrib.auth.decoratorsimportlogin_requiredfromdjango.httpimportHttpResponsefrompassword_sessionimportupdate_session_auth_hashdefchange_password_view(request):user=request.useruser.set_password(request.POST.get('password'))user.save()update_session_auth_hash(request,user)returnHttpResponse("Hello, %s! Your password has been changed!"%user.username)
要求
- python 2.6+或3+
- django=1.3,<;1.7