Yii2.0 如何实现多端RBAC权限管理 [ 2.0 版本 ]
系统中存在多端,比如前台、后台、还有其他两个客户端;
每个客户端都需要建立自己的权限管理
如果都共用一套,似乎有很多问题,比如三断存在路由同名的情况、以及我后台不需要看到前台的权限】角色等
请问这种该如何配置?
是分别使用不同的权限表吗?如果是每个客户端如何指定那个权限表?
最佳答案
-
如果你想让每个端都有一套独立的权限机制,在对应端的配置文件内配置 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 条回复LaravelCode 回复于 2018-08-24 10:46 回复多谢您的解答,我现在就是按照这样来的,请问菜单的表如何设置?
@LaravelCode 我没理解你的“菜单”具体值什么。
LaravelCode 回复于 2018-08-24 10:53 回复RBAC 有一个菜单的控制,menu 默认是 menu 表
@LaravelCode 你指的是常见的导航栏中的菜单?通过用户的权限决定哪些菜单显示/隐藏?可能是实现方法不同,我没有用到你说的 menu 表
LaravelCode 回复于 2018-08-24 11:04 回复我还用到一个 https://github.com/mdmsoft/yii2-admin ,他控制的,应该可以配置,我再看下
LaravelCode 回复于 2018-08-24 12:33 回复drodata 觉得很赞
其他 3 个回答
LaravelCode 北京
注册时间:2017-10-18
最后登录:9小时前
在线时长:193小时53分
最后登录:9小时前
在线时长:193小时53分
- 粉丝47
- 金钱51520
- 威望110
- 积分54550