From 0bced39f0819c5747c5264892d75c8f9e13b8721 Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 3 Jun 2021 19:23:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dredis=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=BC=82=E5=B8=B8=E6=97=B6(=E5=A6=82:=20=E4=B8=BB?= =?UTF-8?q?=E4=BB=8E=E5=88=87=E6=8D=A2),=20=E7=94=A8=E6=88=B7session?= =?UTF-8?q?=E7=AB=8B=E5=8D=B3=E8=BF=87=E6=9C=9F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jumpserver/rewriting/__init__.py | 0 apps/jumpserver/rewriting/session.py | 18 ++++++++++++++++++ apps/jumpserver/settings/base.py | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 apps/jumpserver/rewriting/__init__.py create mode 100644 apps/jumpserver/rewriting/session.py diff --git a/apps/jumpserver/rewriting/__init__.py b/apps/jumpserver/rewriting/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/apps/jumpserver/rewriting/session.py b/apps/jumpserver/rewriting/session.py new file mode 100644 index 000000000..d0e698070 --- /dev/null +++ b/apps/jumpserver/rewriting/session.py @@ -0,0 +1,18 @@ +from redis_sessions.session import force_unicode, SessionStore as RedisSessionStore +from redis import exceptions + + +class SessionStore(RedisSessionStore): + + def load(self): + try: + session_data = self.server.get( + self.get_real_stored_key(self._get_or_create_session_key()) + ) + return self.decode(force_unicode(session_data)) + except exceptions.ConnectionError as e: + # 解决redis服务异常(如: 主从切换时),用户session立即过期的问题 + raise + except: + self._session_key = None + return {} diff --git a/apps/jumpserver/settings/base.py b/apps/jumpserver/settings/base.py index 1d4b2f995..268bafa44 100644 --- a/apps/jumpserver/settings/base.py +++ b/apps/jumpserver/settings/base.py @@ -126,7 +126,7 @@ SESSION_EXPIRE_AT_BROWSER_CLOSE = True # 自定义的配置,SESSION_EXPIRE_AT_BROWSER_CLOSE 始终为 True, 下面这个来控制是否强制关闭后过期 cookie SESSION_EXPIRE_AT_BROWSER_CLOSE_FORCE = CONFIG.SESSION_EXPIRE_AT_BROWSER_CLOSE_FORCE SESSION_SAVE_EVERY_REQUEST = CONFIG.SESSION_SAVE_EVERY_REQUEST -SESSION_ENGINE = 'redis_sessions.session' +SESSION_ENGINE = 'jumpserver.rewriting.session' SESSION_REDIS = { 'host': CONFIG.REDIS_HOST, 'port': CONFIG.REDIS_PORT,