1. 我的路由 router.ts
export default [
{
path: '/',
},
{
path: '/Statistics',
layout: false,
component: './Statistics',
},
{
path: '/user',
layout: false,
routes: [
{
path: '/user',
routes: [
{
name: '登录',
path: '/user/login',
component: './user/Login',
},
{
name: '重置密码',
path: '/user/reset-password',
component: './user/ResetPassWord',
},
],
},
],
},
{
path: '/passenger',
icon: 'CarOutlined',
name: '客运检查系统',
routes: [
{
path: '/passenger/check-in',
component: './Checkin',
name: '进场确认记录',
admin: 'admin.check.carin',
access: 'adminRouteFilter',
},
{
path: '/passenger/anti-epidemic',
component: './AntiEpidemic',
name: '防疫消毒记录',
admin: 'admin.check.antie',
access: 'adminRouteFilter',
},
{
path: '/passenger/security-check',
component: './SecurityCheck',
name: '安全例行检查',
admin: 'admin.check.safecheck',
access: 'adminRouteFilter',
},
{
path: '/passenger/check-out',
component: './CheckOut',
name: '出场检查记录',
admin: 'admin.check.carout',
access: 'adminRouteFilter',
},
{
path: '/passenger/check-out-detail/:id',
component: './CheckOut/detail',
name: '出场检查详情',
hideInMenu: true,
admin: 'admin.check.carout',
access: 'adminRouteFilter',
parentKeys: ['/passenger/check-out'],
},
],
},
{
path: '/settings',
icon: 'SettingOutlined',
name: '系统设置',
routes: [
{
path: '/settings/userManagement',
component: './UserManagement',
name: '用户管理',
admin: 'admin.system.user',
access: 'adminRouteFilter',
},
],
},
{
path: '/403',
component: './403',
},
{ component: './404' },
];
2. 参考官网步骤我们在src/access.ts进行我们的权限判断
export default function isAdminaccess(initialState: any) {
const { currentUser } = initialState || {};
return {
adminRouteFilter: (route: any) => {
return currentUser?.hasRoutes?.includes(route.admin);
},
};
}
export async function getInitialState(): Promise<{
settings?: Partial<LayoutSettings>;
currentUser?: CurrentUser;
fetchUserInfo?: () => Promise<CurrentUser | undefined>;
}> {
const fetchUserInfo = async () => {
try {
const res = await userInfoUsingGET();
if (res.code !== 0) {
message.error(res.message);
}
return {
hasRoutes: res.data.menuList as string[],
access: 'admin',
name: res.data.uniqueName,
needFilter: res.data.needFilter,
avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',
};
} catch (error) {
history.push(loginPath);
}
return undefined;
};
if (history.location.pathname !== loginPath) {
const currentUser = await fetchUserInfo();
return {
fetchUserInfo,
currentUser,
settings: {},
};
}
return {
fetchUserInfo,
settings: {},
};
}
以上仅供参考, 业务不同可能实现方法也不一样。