提交 02441cdb authored 作者: yanpeng's avatar yanpeng

Merge branch 'pre' of http://8.140.26.4:10003/caijian/risk-monitor into yp-dev

流水线 #376 已通过 于阶段
in 1 分 45 秒
import { createRouter, createWebHistory } from "vue-router";
import { getIsLoggedIn } from "@/utils/auth";
const Home = () => import('@/views/home/index.vue')
const DataLibrary = () => import('@/views/dataLibrary/index.vue')
......@@ -21,6 +22,14 @@ const dataRoutes = Object.keys(datas).reduce((acc, path) => {
}, [])
const routes = [
{
path: "/login",
name: "Login",
component: () => import("@/views/login/index.vue"),
meta: {
title: "登录"
}
},
{
path: "/",
name: "Home",
......@@ -66,6 +75,19 @@ const router = createRouter({
// 路由守卫 - 设置页面标题
router.beforeEach((to, from, next) => {
// 登录态:同一次前端服务 BOOT_ID 内跨刷新/跨新标签有效;服务重启后自动失效
const isAuthed = getIsLoggedIn();
const isLoginRoute = to.name === "Login" || /^\/login\/?$/.test(String(to.path || ""));
if (!isLoginRoute && !isAuthed) {
next({
path: "/login",
query: { redirect: to.fullPath }
});
return;
}
if (to.meta.title) {
if (to.meta.dynamicTitle) {
console.log('to', to);
......
......@@ -4,7 +4,7 @@ const ZMOverview = () => import('@/views/ZMOverView/index.vue')
const ZMOverviewRoutes = [
{
path: "/",
redirect: "/ZMOverView"
redirect: "/login"
},
{
path: "/ZMOverView",
......
const STORAGE_LOGIN_FLAG = "isLoggedIn";
const STORAGE_LOGIN_BOOT_ID = "loginBootId";
const getBootId = () => {
// 由 vite.config.js 的 define 注入:重启 dev server 会变化
try {
// eslint-disable-next-line no-undef
return String(__APP_BOOT_ID__ || "");
} catch (_) {
return "";
}
};
export const getIsLoggedIn = () => {
try {
const flag = window.localStorage.getItem(STORAGE_LOGIN_FLAG) === "1";
const savedBootId = window.localStorage.getItem(STORAGE_LOGIN_BOOT_ID) || "";
return flag && savedBootId && savedBootId === getBootId();
} catch (_) {
return false;
}
};
export const setIsLoggedIn = (val) => {
try {
if (val) {
window.localStorage.setItem(STORAGE_LOGIN_FLAG, "1");
window.localStorage.setItem(STORAGE_LOGIN_BOOT_ID, getBootId());
} else {
window.localStorage.removeItem(STORAGE_LOGIN_FLAG);
window.localStorage.removeItem(STORAGE_LOGIN_BOOT_ID);
}
} catch (_) {
// ignore
}
};
差异被折叠。
......@@ -207,7 +207,7 @@
<div class="thinkTank-view">
<div class="thinkTank-image">
<img src="../assets/images/rand-image.png" alt="" />
</div>
</div>
{{ `${domainName} ${consensusList.length + differenceList.length}条` }}
</div>
</div> -->
......@@ -1479,7 +1479,7 @@ onMounted(async () => {
.page-box {
margin-top: 21px;
align-items: center;
align-items: center;
justify-content: center;
display: flex;
}
......
......@@ -6,6 +6,10 @@ import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { resolve } from 'path'
export default defineConfig({
// 每次重启前端服务(Vite)都会变化:用于登录态失效判断
define: {
__APP_BOOT_ID__: JSON.stringify(`${Date.now()}`),
},
plugins: [
vue(),
AutoImport({
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论