Browse Source

江苏工伤退出浏览器

LIJU 2 weeks ago
parent
commit
521c9e5e68

+ 45 - 0
src/main/resources/static/js/common/auto-logout-on-close.js

@@ -0,0 +1,45 @@
+/**
+ * 浏览器关闭后下次打开自动退出(sessionStorage 哨兵方案)
+ * 仅操作本地存储,不影响任何现有流程;不做路由跳转
+ */
+(function () {
+    var SESSION_SENTINEL_KEY = '_browserSessionAlive';
+
+    function performLogoutIfNeeded() {
+        try {
+            var hasToken = !!localStorage.getItem('token');
+            var hasSentinel = sessionStorage.getItem(SESSION_SENTINEL_KEY) === '1';
+
+            // 若检测到已登录且没有哨兵,说明上次是关闭浏览器 → 本次先安全登出
+            if (hasToken && !hasSentinel) {
+                localStorage.clear();
+                // 自动跳转到登录页;若当前已在登录页则不跳
+                try {
+                    var path = (window && window.location && window.location.pathname) || '';
+                    if (path.indexOf('/thmz/login/view') === -1) {
+                        window.location.href = '/thmz/login/view';
+                    }
+                } catch (e2) {}
+            }
+
+            // 为本次会话设置哨兵,确保刷新/同域导航不误判
+            sessionStorage.setItem(SESSION_SENTINEL_KEY, '1');
+        } catch (e) {
+            // 静默处理,绝不影响正常流程
+            if (window && window.console) {
+                console.warn('auto-logout-on-close init error:', e);
+            }
+        }
+    }
+
+    if (document.readyState === 'complete' || document.readyState === 'interactive') {
+        performLogoutIfNeeded();
+    } else {
+        window.addEventListener('load', function onLoad() {
+            performLogoutIfNeeded();
+            window.removeEventListener('load', onLoad);
+        });
+    }
+})();
+
+

+ 1 - 0
src/main/resources/templates/common/head.html

@@ -5,6 +5,7 @@
     <script type="text/javascript" th:inline="javascript"> </script>
     <script src="/thmz/js/dependent/jquery.min.js"></script>
     <script src="/thmz/js/dependent/bootstrap.min.js"></script>
+    <script src="/thmz/js/common/auto-logout-on-close.js"></script>
     <link rel="stylesheet" href="/thmz/css/bootstrap/css/bootstrap.min.css">
 </head>
 </html>

+ 3 - 0
src/main/resources/templates/index.html

@@ -2,6 +2,9 @@
 <link rel="stylesheet" href="/thmz/css/bootstrap/css/daterangepicker.css"/>
 <link rel="stylesheet" href="/thmz/css/custom.min.css">
 <link rel="stylesheet" href="/thmz/css/index.css">
+<!-- 自动退出脚本(会话哨兵方案)开始:仅清理本地 token,不做跳转;不影响现有流程。如需回退,删除此行即可。 -->
+<script src="/thmz/js/common/auto-logout-on-close.js"></script>
+<!-- 自动退出脚本(会话哨兵方案)结束 -->
 <script src="/thmz/js/chart/Chart.bundle.js"></script>
 <script src="/thmz/js/dependent/moment.min.js"></script>
 <script src="/thmz/js/dependent/daterangepicker.js"></script>

+ 3 - 0
src/main/resources/templates/menu.html

@@ -30,6 +30,9 @@
     <!-- Switchery -->
     <link href="/thmz/css/switchery.min.css" rel="stylesheet">
     <title>主页</title>
+    <!-- 自动退出脚本(会话哨兵方案)开始:仅清理本地 token,不做跳转;不影响现有流程。如需回退,删除此行即可。 -->
+    <script src="/thmz/js/common/auto-logout-on-close.js"></script>
+    <!-- 自动退出脚本(会话哨兵方案)结束 -->
     <style>
         /*滚动条整体部分*/
         *::-webkit-scrollbar{