Last active
May 29, 2024 09:38
-
-
Save jackeyGao/b6c606f99deaf7a3af2a6df01873249a to your computer and use it in GitHub Desktop.
show message via django messages when django session is expired
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from django.utils.deprecation import MiddlewareMixin | |
| from django.contrib import messages | |
| from django.utils import timezone | |
| from django.conf import settings | |
| from django.utils.functional import cached_property | |
| class StateMiddleware(MiddlewareMixin): | |
| @classmethod | |
| def get_model_class(cls): | |
| from django.contrib.sessions.models import Session | |
| return Session | |
| @cached_property | |
| def model(self): | |
| return self.get_model_class() | |
| def session_is_expire(self, session_key): | |
| try: | |
| session = self.model.objects.get( | |
| session_key=session_key | |
| ) | |
| if session.expire_date < timezone.now(): | |
| return True | |
| except self.model.DoesNotExist as e: | |
| return False | |
| def process_request(self, request): | |
| session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME) | |
| if self.session_is_expire(session_key): | |
| messages.warning(request, "Session expired, Please log-in again") | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| SESSION_EXPIRE_AT_BROWSER_CLOSE = True | |
| SESSION_COOKIE_AGE = 10 * 60 | |
| SESSION_SAVE_EVERY_REQUEST = True | |
| MIDDLEWARE = [ | |
| 'django.middleware.security.SecurityMiddleware', | |
| 'django.contrib.sessions.middleware.SessionMiddleware', | |
| 'django.middleware.common.CommonMiddleware', | |
| 'django.middleware.csrf.CsrfViewMiddleware', | |
| 'django.contrib.auth.middleware.AuthenticationMiddleware', | |
| 'django.contrib.messages.middleware.MessageMiddleware', | |
| 'django.middleware.clickjacking.XFrameOptionsMiddleware', | |
| '....your app...middleware.StateMiddleware' | |
| ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment