移除登录
去掉登录校验后,访问任何页面都直接进入,适用于数据大屏、公开展示页等无需用户验证的场景。
改动点
| 文件 | 操作 |
|---|---|
src/router/guards/permission.ts | 移除登录校验、白名单、登录跳转逻辑 |
src/stores/permission.ts | generateRoutes 改为直接返回静态路由 |
src/router/index.ts | 移除 /login 路由(可选) |
src/utils/request.ts | 移除 Token 注入和 401 跳转(可选) |
具体步骤
1. 移除路由守卫中的登录校验
src/router/guards/permission.ts 改为:
typescript
import NProgress from "@/plugins/nprogress";
import router from "@/router";
import { usePermissionStore } from "@/stores";
export function setupPermissionGuard() {
router.beforeEach(async (to, _from) => {
NProgress.start();
// 直接使用静态路由,不做登录校验
usePermissionStore().generateRoutes();
if (to.matched.length === 0) {
NProgress.done();
return "/404";
}
});
router.afterEach(() => {
NProgress.done();
});
}2. 简化路由生成
src/stores/permission.ts 的 generateRoutes 改为直接使用静态路由:
typescript
export const usePermissionStore = defineStore("permission", () => {
const routes = ref<RouteRecordRaw[]>([]);
const isRouteGenerated = ref(false);
function generateRoutes() {
routes.value = [...constantRoutes];
isRouteGenerated.value = true;
}
return { routes, isRouteGenerated, generateRoutes };
});3. 移除登录页路由(可选)
src/router/index.ts 中删除 /login 路由:
typescript
export const constantRoutes: RouteRecordRaw[] = [
// 删除以下登录路由
// { path: "/login", component: () => import("@/views/login/index.vue"), meta: { hidden: true } },
];4. 移除 Token 逻辑(可选)
src/utils/request.ts 请求拦截器中移除 Token 注入,响应拦截器中移除 401 跳转:
typescript
service.interceptors.request.use((config) => {
// 删除以下 Token 注入
// const token = getToken();
// if (token) config.headers.Authorization = `Bearer ${token}`;
return config;
});验证
pnpm run dev启动后,直接访问/dashboard无需登录即可进入- 侧边栏菜单正常显示,页面跳转正常
- 访问不存在的路由跳转到 404
