大佬们 问一下路由的问题,登录的页面有个切换功能 有系统账号跟分销账号 默认系统账号的时候登录传了类型1,进到系统页面所有的菜单选项都出来,如果切换到分销账号,传了2登录到页面,只展示两个菜单 之前的前端写死的路由,后台没有权限,大佬们这个问题怎么解尼624b332fb9393aeb489952308a560a79.png
这是router的index.ts文件
如果切换到分销账号,传了2登录到页面,登录到首页只展示两个菜单
如果默认1,登录到首页全部展示菜单栏
大佬们 问一下路由的问题,登录的页面有个切换功能 有系统账号跟分销账号 默认系统账号的时候登录传了类型1,进到系统页面所有的菜单选项都出来,如果切换到分销账号,传了2登录到页面,只展示两个菜单 之前的前端写死的路由,后台没有权限,大佬们这个问题怎么解尼624b332fb9393aeb489952308a560a79.png
这是router的index.ts文件
如果切换到分销账号,传了2登录到页面,登录到首页只展示两个菜单
如果默认1,登录到首页全部展示菜单栏
### 解决方案
为了解决你提到的路由问题,你可以根据登录时传递的账号类型(系统账号或分销账号)来动态生成路由配置。以下是一个可能的解决方案:
1. **在登录时传递账号类型**:
确保登录请求中包含了账号类型(例如,通过查询参数或请求体传递)。
2. **根据账号类型生成路由**:
在登录成功后,根据传递的账号类型来动态生成路由配置。你可以创建一个函数,该函数根据账号类型返回不同的路由配置。
3. **使用 Vue Router 的 `addRoutes` 方法**:
在 Vue Router 实例中,使用 `addRoutes` 方法来动态添加路由。这样,你可以根据登录的账号类型来添加相应的路由。
### 具体实现步骤
1. **修改登录逻辑**:
在登录逻辑中,根据账号类型保存不同的路由配置。
2. **创建路由配置函数**:
// router/config.ts
import { RouteRecordRaw } from 'vue-router';
const systemRoutes: Array<RouteRecordRaw> = [
// 系统账号的所有路由配置
{ path: '/', name: 'Home', component: () => import('@/views/Home.vue') },
// 其他系统账号路由...
];
const distributorRoutes: Array<RouteRecordRaw> = [
// 分销账号的特定路由配置
{ path: '/', name: 'Home', component: () => import('@/views/Home.vue') },
{ path: '/menu1', name: 'Menu1', component: () => import('@/views/Menu1.vue') },
{ path: '/menu2', name: 'Menu2', component: () => import('@/views/Menu2.vue') },
];
export function getRoutesByAccountType(accountType: number): Array<RouteRecordRaw> {
return accountType === 1 ? systemRoutes : distributorRoutes;
}
3. **在登录成功后动态添加路由**:
// main.ts 或 loginSuccessHandler.ts
import { createApp } from 'vue';
import { createRouter, createWebHistory } from 'vue-router';
import { getRoutesByAccountType } from './router/config';
import App from './App.vue';
const app = createApp(App);
const router = createRouter({
history: createWebHistory(),
routes: [], // 初始时不添加任何路由
});
app.use(router);
function handleLoginSuccess(accountType: number) {
const routes = getRoutesByAccountType(accountType);
router.addRoutes(routes);
router.push('/'); // 登录成功后重定向到首页
}
// 假设在某个地方调用 handleLoginSuccess 函数
handleLoginSuccess(/ 从登录请求中获取的 accountType /);
app.mount('#app');
4. **确保路由守卫正确处理**:
你可能需要在路由守卫中检查是否已经添加了相应的路由,以避免在路由跳转时发生错误。
通过上述步骤,你可以根据登录时传递的账号类型来动态生成和添加路由配置,从而实现不同账号类型显示不同菜单的需求。
13 回答12.6k 阅读
2 回答4.9k 阅读✓ 已解决
9 回答1.5k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
7 回答2k 阅读
5 回答560 阅读
3 回答1.3k 阅读✓ 已解决