2018-08-23 18:45:11 4093次浏览 4条回答 1 悬赏 50 金钱

系统中存在多端,比如前台、后台、还有其他两个客户端;
每个客户端都需要建立自己的权限管理
如果都共用一套,似乎有很多问题,比如三断存在路由同名的情况、以及我后台不需要看到前台的权限】角色等

请问这种该如何配置?
是分别使用不同的权限表吗?如果是每个客户端如何指定那个权限表?

最佳答案

  • drodata 发布于 2018-08-24 09:55 举报

    如果你想让每个端都有一套独立的权限机制,在对应端的配置文件内配置 authManager 即可。假设一个项目包括:后端 (backend), 前端 (frontend), 微信小程序 (wechat)和 手机 H5 端 (mobile). 项目的权限机制可做如下配置:

    
    // common/config/main.php
    // 
    // 全局共用的 RBAC 权限, 这里存储最常用的一套权限机制
    
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
    
    // backend/config/main.php
    // 
    // 后台我想使用公用的权限机制,那么这里就不需要配置 authManager
    
    
    // frontend/config/main.php
    // 
    // 前台我想单独设置一套专用的权限机制,权限表均以 'frontend' 开头
    
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
            'itemTable' => 'frontend_auth_item',
            'itemChildTable' => 'frontend_auth_item_child',
            'assignmentTable' => 'frontend_auth_assignment',
            'ruleTable' => 'frontend_auth_rule',
        ],
    
    // wechat/config/main.php
    // 
    // 小程序端我也想单独配置权限机制,权限表均以 'wechat' 开头
    
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
            'itemTable' => 'wechat_auth_item',
            'itemChildTable' => 'wechat_auth_item_child',
            'assignmentTable' => 'wechat_auth_assignment',
            'ruleTable' => 'wechat_auth_rule',
        ],
    
    // mobile/config/main.php
    // 
    // 移动端我想使用前台的权限:
    
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
            'itemTable' => 'frontend_auth_item',
            'itemChildTable' => 'frontend_auth_item_child',
            'assignmentTable' => 'frontend_auth_assignment',
            'ruleTable' => 'frontend_auth_rule',
        ],
    

    如果你不想要那么多的权限表,RBAC 还支持文件格式的配置: yii\rbac\PhpManager, 这种适合那些简单且固定的权限(例如前台)。

    6 条回复
    回复于 2018-08-24 10:46 回复

    多谢您的解答,我现在就是按照这样来的,请问菜单的表如何设置?

    回复于 2018-08-24 10:49 回复

    我没理解你的“菜单”具体值什么。

    回复于 2018-08-24 10:53 回复

    RBAC 有一个菜单的控制,menu 默认是 menu 表

    回复于 2018-08-24 11:01 回复

    你指的是常见的导航栏中的菜单?通过用户的权限决定哪些菜单显示/隐藏?可能是实现方法不同,我没有用到你说的 menu 表

    回复于 2018-08-24 11:04 回复

    我还用到一个 https://github.com/mdmsoft/yii2-admin ,他控制的,应该可以配置,我再看下

    回复于 2018-08-24 12:33 回复
    觉得很赞
  • 回答于 2018-08-24 07:53 举报

    配三套权限不行?

    觉得很赞
  • 回答于 2018-08-24 07:56 举报

    直接按你的需求,给每个组建立对应的权限。
    如果用户要登录,那就是把权限绑定uesrid
    如果用户不要登录,或者登录后还要分终端来源,你就通过访问来源给访客分配权限。

  • 回答于 2018-08-26 10:26 举报

    Very Good ! get !

您需要登录后才可以回答。登录 | 立即注册
LaravelCode
董事长

LaravelCode 北京

注册时间:2017-10-18
最后登录:9小时前
在线时长:190小时42分
  • 粉丝47
  • 金钱47720
  • 威望110
  • 积分50720

热门问题