您的位置:首页 > 游戏 > 游戏 > 免费的项目管理软件_c2c模式有哪些优势_电脑零基础培训班_百度app广告

免费的项目管理软件_c2c模式有哪些优势_电脑零基础培训班_百度app广告

2025/2/24 8:06:57 来源:https://blog.csdn.net/u010843503/article/details/144242176  浏览:    关键词:免费的项目管理软件_c2c模式有哪些优势_电脑零基础培训班_百度app广告
免费的项目管理软件_c2c模式有哪些优势_电脑零基础培训班_百度app广告

权限路由一般两种
1中接口中返回菜单
2 接口中返回权限,前端做匹配

  • 一般都是那种结合,react中没有vue那种钩子函数如何做?
在项目中写一个高阶函数,在高阶函数中判断权限、是否登录等操作app.tsx或者man.tsx中使用 《AuthRouter》 高阶函数
<HashRouter><ConfigProvider locale={i18nLocale} componentSize={assemblySize}><AuthRouter><Router /></AuthRouter></ConfigProvider></HashRouter>创建高阶函数
AuthRouter.tsx
import { Navigate, useLocation } from 'react-router-dom';import { useSelector } from 'react-redux';
import { RootState } from '@/store';
import {searchRoute} from "@/utils/util"
import { HOME_URL } from "@/config/config";
function AutnToken(props: { children: JSX.Element }) {const userData=useSelector((state:RootState) => state.getDataConfig)const {token}=userData// 获取接口中的路由 一维数组,如果是多维需自己转一维const { authRouter } = useSelector((state: RootState) => state.auth);// rootRouter//这里可以使用接口中或者前端本地的路由数据const rootRouter: never[]=[] //// 获取当前路由信息const { pathname } = useLocation();// 获取当前路由对应的信息const route = searchRoute(pathname, rootRouter);// * 判断当前路由是否需要访问权限(不需要权限直接放行)if (!route.meta?.requiresAuth) return props.children;// * 判断是否有Tokenif (!token) return <Navigate to="/login" replace />;// * Static Router(静态路由,必须配置首页地址,否则不能进首页获取菜单、按钮权限等数据),获取数据的时候会loading,所有配置首页地址也没问题const staticRouter = [HOME_URL, "/405"];const routerList = authRouter.concat(staticRouter);// * 如果访问的地址没有在路由表中重定向到405页面if (routerList.indexOf(pathname) == -1) return <Navigate to="/405" />;// * 当前账号有权限返回 Router,正常访问页面return props.children;
}export default AutnToken

config/config中配置

默认首页地址
export const HOME_URL: string = "/home/index"; 这个是必须有的

这样就实现, 未登录token不存在、路由不存在、当前路由不在后端接口中不显示并跳转404/405页面

项目截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com