This Middleware is to log users out after a certain amount of time has passed. You'll want to add AUTO_LOGOUT_DELAY to your settings.py, set to a number of minutes after which a user should be logged out.
It adds the key 'last_touch' to the session, you'll want to change that if you happen to be using that already.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from django.conf import settings
from django.contrib import auth
from datetime import datetime, timedelta
class AutoLogout:
def process_request(self, request):
if not request.user.is_authenticated() :
#Can't log out if not logged in
return
try:
if datetime.now() - request.session['last_touch'] > timedelta( 0, settings.AUTO_LOGOUT_DELAY * 60, 0):
auth.logout(request)
del request.session['last_touch']
return
except KeyError:
pass
request.session['last_touch'] = datetime.now()
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 11 months, 2 weeks ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 11 months, 3 weeks ago
- Serializer factory with Django Rest Framework by julio 1 year, 6 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 7 months ago
- Help text hyperlinks by sa2812 1 year, 7 months ago
Comments
Thanks for this snippet, an import is missing:
#
Thanks, I've updated the code.
#
Hello,
I get the following error when I try to use your middleware :
----------------------------------------------------------
----------------------------------------------------------
WebGui is my project and in it's settings.py I added 'WebGui.AutoLogout', in the middlware conf like so :
and I also added:
to settings.py like you said. Did I do something wrong?
Thank you, Kenza
#
Three years later, but you'll need to put this class in a file called middleware.py in your application
#
@kmajbar To use this as a project level middleware, you would save this code as WebGui/middleware.py
Then add 'WebGui.middleware.AutoLogout' to your MIDDLEWARE_CLASSES
#
Please login first before commenting.