V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NoKey
V2EX  ›  程序员

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

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

    接口访问权限交给后端处理就好了
    x250881478
        9
    x250881478  
       265 天前
    看你们业务需求 粒度准备控制到多细了, 权限最终就是一个字符串或数字标识 根据这个标识, 前端判断是否能展示, 是否能发起请求. 后端判断是否响应请求.
    粗粒度的可以用类似角色这种来控制, 判断的是用户是否是某个角色
    细粒度的就可以非常精确了, 可以给页面, 按钮, tab, 接口等全部设置权限标识, 最终根据标识决定用户哪些功能可用
    LeeSeoung
        10
    LeeSeoung  
       265 天前
    进页面前把涉及的权限 ID 都发送到后台判断是否有权限,每一条权限 ID 有对应的组件,前台根据返回结果判断是否展示元素。后台再加一层拦截调用对应功能前再判断一次权限 ID 就可以了。
    dudubaba
        11
    dudubaba  
       264 天前
    1 、通用菜单
    2 、每个菜单都有对应的父级,父级没权限子菜单肯定也没。
    leonkfd
        12
    leonkfd  
       264 天前
    1. 登录后将后端返回的角色路由存到 store
    2. 页面菜单栏:将全量的菜单目录根据当前权限过滤出所需菜单
    3. 配置路由守卫:每次跳转路由都判断有无权限
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5339 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 03:52 · PVG 11:52 · LAX 19:52 · JFK 22:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.