能不能说下后台的权限管理和菜单管理一般怎么做? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
laravel
V2EX    PHP

能不能说下后台的权限管理和菜单管理一般怎么做?

  •  
  •   laravel 2019-07-15 09:25:07 +08:00 11325 次点击
    这是一个创建于 2340 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用 laravel,一直没做过权限管理和菜单管理,有哪些 best practice 吗? 比如要实现后台某个登录用户只能显示自己有权限的菜单,该如何做。

    30 条回复    2020-08-06 14:34:13 +08:00
    kchum
        1
    kchum  
       2019-07-15 09:25:58 +08:00 via iPhone
    laravel-admin 不够用吗?
    laravel
        2
    laravel  
    OP
       2019-07-15 09:27:13 +08:00
    @kchum 自己设计呢?
    yiqiao
        3
    yiqiao  
       2019-07-15 09:31:34 +08:00
    @laravel 菜单加个路由名,去和用户拥有的权限列表匹配
    ben1024
        4
    ben1024  
       2019-07-15 09:42:45 +08:00
    权限 RABC + 中间件拦截
    菜单 路由反射
    mirrorpen
        5
    mirrorpen  
       2019-07-15 09:46:43 +08:00
    我们后台用的 vue+element,接口用 laravel,前两个月刚增加了这个需求
    我是这么做的,需要 3 张表,admin_user(后台用户表)、admin_role(角色表)、admin_module(后台模块表),把后台菜单放进模块表里,然后给每个后台用户设置一个角色+权限菜单放入角色表
    plp
        6
    plp  
       2019-07-15 10:01:52 +08:00
    我们是 role 表+menu 表+rolemenu 表
    brust
        7
    brust  
       2019-07-15 10:04:14 +08:00
    RABC
    不过数据上的权限 就有点...
    比如 100 条记录 权限低的只能看 部分条数 一两个字段,最高权限是所有字段左右条数
    不知道 v 友有什么解决方案
    guyeu
        8
    guyeu  
       2019-07-15 10:14:05 +08:00   1
    一般都是`用户<-多对多->角色<-多对多->权限`模型,权限表里每一项权限对应一个或多个菜单项。
    laravel
        9
    laravel  
    OP
       2019-07-15 10:21:30 +08:00
    言射言射大家
    southsala
        10
    southsala  
       2019-07-15 10:57:30 +08:00
    简单点的就是 8 楼说得,复杂点的可以岗位设置权限(主岗位、兼职岗位)、部门设置权限、角色设置权限、用户组设置权限、直接给用户设置权限,具体看需要
    pota
        11
    pota  
       2019-07-15 11:02:56 +08:00
    RABC + 反射 + 中间间 通过反射控制权限颗粒度 路由显示依据权限控制
    zorichen
        12
    zorichen  
       2019-07-15 11:03:11 +08:00
    同好奇下... 页面 /菜单 /按钮权限 和 数据权限 分离,主流方案是什么
    rockyou12
        13
    rockyou12  
       2019-07-15 11:10:22 +08:00
    @zorichen 就不该分,一个资源对一个接口,ui 上也要对上。同种资源返回的数据不同就在后端建立不同的 dto,用不同的接口返回。

    这样 ui 的元素和后端接口都能映射上。前后端用两套权限设计后面维护铁定会爆炸的
    Yuicon
        14
    Yuicon  
       2019-07-15 11:27:42 +08:00
    非常的麻烦 我看好多都是字符串匹配
    NilXuan
        15
    NilXuan  
       2019-07-15 11:49:39 +08:00
    从框架选择上来说,后端使用 Spring Security 框架;
    从设计上来说是显式的(对资源保护、对行为授权)的 RBAC 模型
    从流程上来说是用户登录后,返回主页面,然后再向后台(这一步为普通的菜单数据库查询)请求相关菜单、按钮的信息(如链接、图标)返回给前端。
    至此可实现前端的权限管理。
    当然,对于后台接收到的请求,可以在 Spring Security 里再加一层后端验证,防止接口泄露后的非法调用。(以上步骤,实现过一个简单的管理 demo )
    最佳实践的话,今天在 github 上看到一个项目,https://github.com/elunez/eladmin。
    huijiewei
        16
    huijiewei  
       2019-07-15 12:05:08 +08:00
    我一般用 ACL,RBAC 对于大部分中小型项目来说太重太繁琐了
    Takamine
        17
    Takamine  
       2019-07-15 12:10:14 +08:00
    找一个 CMS 后台管理系统,看一下他的数据库表和代码实现:doge:。
    techone
        18
    techone  
       2019-07-15 12:13:12 +08:00
    推荐你个授权库:Laravel Authorization ( https://github.com/php-casbin/laravel-authz
    支持 acl、rbac、基于 restful 的访问控制。
    ericgui
        19
    ericgui  
       2019-07-15 13:19:31 +08:00
    @Takamine 有道理
    ifconfig
        20
    ifconfig  
       2019-07-15 16:37:07 +08:00
    推荐 zizaco/entrust,歪果仁用过都说好
    DefWindowProc
        21
    DefWindowProc  
       2019-07-15 16:48:19 +08:00
    我前段时间正好做了一个权限菜单控制功能,大概思路就是菜单按钮在初始化的时候请求对应的权限,若有该权限则显示,否则不显示,前后端分离项目,后端 spring boot,前端 react
    a54552239
        22
    a54552239  
       2019-07-15 17:33:09 +08:00
    做菜单路由和权限映射
    a54552239
        23
    a54552239  
       2019-07-15 17:33:48 +08:00
    @DefWindowProc 每次加载按钮都请求权限,会不会太频繁?
    jobtesting
        24
    jobtesting  
       2019-07-15 17:36:34 +08:00 via iPhone
    这个要分功能权限和数据权限
    BCy66drFCvk1Ou87
        25
    BCy66drFCvk1Ou87  
       2019-07-15 17:37:59 +08:00
    可以自定义一套权限码(如超级管理员使用 0-200,普通管理员使用 201-400,普通用户使用 401 以上……),菜单路由携带进行判断
    tedzhou1221
        26
    tedzhou1221  
       2019-07-16 00:29:07 +08:00 via Android
    如果在深入一点就考虑
    1,权限继承、
    2,数据权限(就是 7 楼所说的)
    3,还有给用户组分配权限
    4,菜单权限控制到按钮级别
    5,缓存( resistance)权限和菜单的数据
    6,
    tedzhou1221
        27
    tedzhou1221  
       2019-07-16 00:29:35 +08:00 via Android
    第 5 点打错,应该是 redis
    jianyan74
        28
    jianyan74  
       2019-07-16 10:09:41 +08:00
    igeeky
        29
    igeeky  
       2019-12-20 19:11:05 +08:00
    我来推荐一个吧:
    https://github.com/iGeeky/wolf
    通用 RBAC 系统,统一用户权限系统, 统一授权及访问控制. (没实现菜单权限控制)
    mustangx
        30
    mustangx  
       2020-08-06 14:34:13 +08:00
    @tedzhou1221 请教下现在数据权限有什么比较好的方案么,现在查阅到相关资料大多数都是通过拦截 mybatis 的执行器然后添加相关的条件的,但是感觉还是少了点通用性,也有在配置项里面设置好条件字段和值,通过切面拦截的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4408 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 05:35 PVG 13:35 LAX 21:35 JFK 00:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86