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,