新项目权限控制
从前端控制
首先需要在初始化时获取全局的权限字符数组,存储在状态管理中。
例如:permission = ['a', 'b', 'c']
路由
由后端返回路由树,如果是菜单路由则直接渲染。如果是隐藏路由,需要在前端本地写完整路由地址,在初始化时与接口的路由匹配,能匹配上则推到路由树中。如此,如果是没有权限的页面,则不会出现在菜单中,并且隐藏菜单不会注册路由,直接走到404。
按钮
useAuth
该hooks接收一个数组,例如auth = ['a', 'b', 'c']
利用Porvider/Context向全局注入上下文。
用auth跟permission对比,permission完全包括auth则拥有权限
AuthButton
利用useAuth封装一个Button组件。该组件同样接收auth: string[]。
从后端控制
在axios拦截器里面对401、403等状态码进行判断,跳转到无权限或404页面。