八卦一下路由权限控制是后端返回所有前端路由,还是后端返回相应角色下的权限,然后前端-end通过遍历修改当前路由?引用上面问题接受的答案:第一种后台返回路由,第二种后台返回权限。共同点:两种方法都可以实现需求。前端必须维护路由地址和模块文件地址之间的映射。后段返回的数据一般需要遍历进行二次处理。页面中元素(按钮)的权限必须分开处理的技术点会涉及到路由守卫和路由认证的区别:默认路由列表:方法一维护home、login等非授权需求路由,其他routes需要通过interfaces和routeapi动态添加:addRoutes;方法二需要维护一个完整的路由列表,不需要额外的路由,通过配置每条路由的access数组来进行鉴权。路由跳转:因为方法一返回的是用户权限下的路由,不需要权限认证;需要方法2。路由定制度:方法一可以通过修改数据库中的路由数据来定制前端菜单结构,因此还需要做一个递归函数来实现路由重组,具有更好的扩展性;方法二针对菜单结构比较稳定的项目,一般不支持结构变化。返回消息:一般来说,方法一的返回消息大小比方法二大。补充:方法一指的是动态路由。路由分为两部分,一部分是home,login等。后端在用户权限下返回的路由,当用户登录并获得角色时,前端根据roles,从而动态生成可访问的页面,然后将router.addRoutes动态挂载到router上;前端需要有菜单管理,可以通过修改路由数据来自定义前端的菜单结构,具有更好的扩展性。二是在前端配置路由表,后端只返回权限。前端需要有菜单权限管理,加载路由和菜单时需要进行权限验证;该方法适用于菜单结构比较稳定的项目,一般不支持结构变化。.按钮权限控制viewcontrol基于权限的按钮可见性控制和界面变化:方法一:v-if方法二:自定义指令根据用户权限判断每个按钮是否显示,方法无非就是v-if或者自定义instructions,只要把v-if背后的权限验证逻辑抽象成一个方法,无论是代码量还是使用形式,都和自定义指令差不多。v-if的特点是会响应数据的变化,所以随着应用的运行会频繁触发权限验证,在应用的整个生命周期中只需要验证一次权限即可。全局验证方法仍然在自定义指令内部被调用,但好处是它只会在元素初始化时执行一次。在大多数情况下,自定义指令应该用于实现视图控制。因此,最好使用自定义指令。并非每个操作按钮都会发起AJAX请求。例如,编辑按钮本身不会触发请求,但另一个保存按钮实际上会触发请求。焦点:让按钮与请求相关联。比如按钮涉及一个名为A的请求,那么权限指令可以这样写:形式。例如,A可以是包含两个属性的对象:constA={p:['put,/menu/**'],r:params=>{returnaxios.put(`/menu/${params.id}`,params)}};//用作权限:
