请问一下,不在菜单树上的菜单如何控制权限

67 天前
 NoKey
在做一个权限管理系统
前端的菜单展示,使用的是后端返回的菜单树数据进行渲染
但是总有部分功能,它不在菜单树上,前端也不展示,会被默认调起来
这类功能如何控制权限呢?谢谢
就是后端如何告知前端,这个人有这么一个功能,或者另外要给人没有这个功能
1383 次点击
所在节点    程序员
12 条回复
wanniwa
67 天前
前端都不展示,还跟前端有毛关系,后端自己加接口权限
iOCZS
67 天前
尽管不是菜单,但是可能是 tab 或者 button ,这种情况是需要指定一个权限的。前端从用户信息里获取权限列表,确定是否要展示 tab 或者 button 。当然进一步,还要控制接口权限,如果需要的话。
NoKey
67 天前
@iOCZS 意思就是,要分菜单树和权限列表两部分信息给前端?
NoKey
67 天前
@wanniwa 前端也是要分不同的人,不同的权限,只是有些功能是隐藏的
iOCZS
67 天前
@NoKey 看你怎么设计表。你也看到了权限分为菜单、按钮、接口几种,其中按钮经常对应某个接口,所以看起来可以用同一个权限名字。对于前端,就是用权限名称控制按钮是否显示。对于后端,就是用权限名称判断用户是否有调用权限。好像还是数据权限一说,对于同一个接口,不同的角色能访问的数据还不相同。还在研究中。。。
wanniwa
67 天前
@NoKey #4 正常是直接后端返回当前用户的可以使用的权限资源,一般就是 menu 接口或者用户信息查询接口会给,里面会加上字段去判断是不是菜单。但是像你说的部分功能你就可以理解成按钮权限,更细化的权限。因为每个权限后端定义的时候都会给一个 code ,你在实现的时候,你只管当前用户权限集合中有没有这个 code 来展示元素就行了,比如:sys:role:list ,角色列表不展示,并不用纠结是不是菜单。
wanniwa
67 天前
@NoKey #4 你在渲染菜单数的时候可以过滤掉不是菜单的数据,但是底层你得缓存一份全量的权限 code 数据,方便你自封封装个属性类似 hasPermis='sys:role:list' 只要加在元素上子就会判断当前用户权限 code 中是否存在,没有就不展示
learnshare
67 天前
前端的权限一般要分成 页面(是否可见)和 操作( RCUD 等,可以随意扩展) 两部分
菜单对应的是页面权限,页面中的内容和功能放在操作权限里

接口访问权限交给后端处理就好了
x250881478
67 天前
看你们业务需求 粒度准备控制到多细了, 权限最终就是一个字符串或数字标识 根据这个标识, 前端判断是否能展示, 是否能发起请求. 后端判断是否响应请求.
粗粒度的可以用类似角色这种来控制, 判断的是用户是否是某个角色
细粒度的就可以非常精确了, 可以给页面, 按钮, tab, 接口等全部设置权限标识, 最终根据标识决定用户哪些功能可用
LeeSeoung
66 天前
进页面前把涉及的权限 ID 都发送到后台判断是否有权限,每一条权限 ID 有对应的组件,前台根据返回结果判断是否展示元素。后台再加一层拦截调用对应功能前再判断一次权限 ID 就可以了。
dudubaba
66 天前
1 、通用菜单
2 、每个菜单都有对应的父级,父级没权限子菜单肯定也没。
leonkfd
65 天前
1. 登录后将后端返回的角色路由存到 store
2. 页面菜单栏:将全量的菜单目录根据当前权限过滤出所需菜单
3. 配置路由守卫:每次跳转路由都判断有无权限

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1020553

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX