搭建 rabc 后台系列教程(五)—— rbac效果预览 [ 2.0 版本 ]
作者:鲁鲁槟 出处:http://www.luluqi.cn/post/default/show-post?id=128
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
效果:“普通管理员”可以进行gii和debug的操作,而“站长”除了可以进行gii和debug的操作,还可以进行“权限控制”的操作。
一、创建“调试”的权限:可以进行 gii 和 degug 的操作
1、点击“路由”,将 /gii/ 、/gii/default/index、/debug/ 、/degug/index 写入到 auth_item 表
2、点击“权限”,创建名为“调试”的权限,并分配 /gii/ 和 /debug/ 路由
3、点击“角色”,创建名为“普通管理员”的角色,并分配“调式”的权限
二、创建“调式”的菜单
1、点击“菜单”进行创建以下菜单
2、分配“调式“权限给”站长“角色
3、刷新页面,你会发现左侧导航栏多了调式的菜单
三、创建“普通管理员“角色的新用户
1、进入前台 127.0.0.1/advanced/frontend/web 进行注册新用户
2、进入后台 127.0.0.1/advanced/backend/web/admin/assignment/index
点击 admin 的查看按钮,为 admin 分配普通管理员的角色
3、刷新页面,你会发现 admin 用户也多了 调试的菜单
四、rbac 的作用
1、在步骤三、2中 admin 用户通过 输入地址:127.0.0.1/advanced/backend/web/admin/assignment 进入分配角色的页面,现在我们通过配置限制用户访问,配置文件为 backend/main.php
2、现在 admin 用户通过 127.0.0.1/advanced/backend/web/admin/assignment 会出现下面的界面,说明 rbac 成功了
3、退出 admin 用户,登录 master 用户,发现 master 可以执行 admin/assignment 操作
注:如有疑问或者有更好的方法,请加入QQ群453300767 进行讨论或在下方进行评论。
鲁鲁槟 东莞
最后登录:2024-08-09
在线时长:124小时36分
- 粉丝110
- 金钱5620
- 威望140
- 积分8260
共 4 条评论
通俗易懂,不错的教程,感谢楼主
按照教程配置好了,但是admin用户执行admin/assignment 操作依旧可行,是为什么
admin用户只指定了普通管理员角色,普通管理员角色只有调试权限确认无误,main.php的配置也改了
'allowActions' => [ //这里是允许访问的action //controller/action // * 表示允许所有,后期会介绍这个 'site/*' //'*' ]
请问还有哪里可能遗漏
你可能把上面的'as access'配置写在‘components’组件当中了?
@鲁鲁槟 没有,在return的数组的最外层
return [ 'id' => 'app-backend', 'basePath' => dirname(__DIR__), 'controllerNamespace' => 'backend\controllers', 'bootstrap' => ['log'], 'modules' => [ "admin" => [ "class" => "mdm\admin\Module", ], ], "aliases" => [ "@mdm/admin" => "@vendor/mdmsoft/yii2-admin", ], 'as access' => [ 'class' => 'mdm\admin\components\AccessControl', 'allowActions' => [ //这里是允许访问的action //controller/action // * 表示允许所有,后期会介绍这个 'site/*' //'*' ] ], 'components' => [ 'request' => [ 'csrfParam' => '_csrf-backend', ], 'user' => [ 'identityClass' => 'common\models\User', 'enableAutoLogin' => true, 'identityCookie' => ['name' => '_identity-backend', 'httpOnly' => true], ], 'session' => [ // this is the name of the session cookie used for login on the backend 'name' => 'advanced-backend', ], 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], ], ], 'errorHandler' => [ 'errorAction' => 'site/error', ], /* 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], */ "urlManager" => [ //用于表明 urlManager 是否启用URL美化功能 "enablePrettyUrl" => true, // 是否在URL中显示入口脚本 "showScriptName" => false, ], "authManager" => [ "class" => 'yii\rbac\DbManager', "defaultRoles" => ["guest"], ], ], 'params' => $params, ];
清下cookies试试
二 1中,第二张图挂了
点击原文查看吧
https://www.lulublog.cn/post/128