创建权限控制所需要的数据表
yii 默认已经帮我们准备好了数据表
vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql // 直接打开这个文件导入数据库就可以了
如果不愿意去找这个文件,我在最下
附录
边给大家已经把代码粘贴过来了。当然也可以让yii自己生成数据表
yii migrate --migrationPath=@yii/rbac/migrations/ // 进入你的项目根目录,执行这句话完美创建。(如果你是windows环境可以进入项目根目录后摁住shif+鼠标右键,选择在此处打开命令窗口)
使用
yii2-admin
github上有非常详细的文档
使用
composer
进行安装php composer.phar require mdmsoft/yii2-admin "~1.0" or php composer.phar require mdmsoft/yii2-admin "~2.0" # 它会吧文件安装到vendor目录下的mdmsoft目录
权限配置
配置文件位置: backend/config/main.php
"modules" => [ "admin" => [ "class" => "mdm\admin\Module", ], ], "aliases" => [ "@mdm/admin" => "@vendor/mdmsoft/yii2-admin", ], //这里必须添加authManager配置项 "components" => [ ... //components数组中加入authManager组件,有PhpManager和DbManager两种方式, //PhpManager将权限关系保存在文件里,这里使用的是DbManager方式,将权限关系保存在数据库. "authManager" => [ "class" => 'yii\rbac\DbManager', //这里记得用单引号而不是双引号 "defaultRoles" => ["guest"], ], ... ], //严重警告!!!as access位置不要添加错了,不可以加到components里边!!!! 'as access' => [ 'class' => 'mdm\admin\components\AccessControl', 'allowActions' => [ //这里是允许访问的action //controller/action ] ],
检验权限模块是否有效
如果已经下载好了yii2-admin,也已经配置了相关配置,那么此时你刷新任何页面都是无法访问的,因为都没有权限进入。为了开发方便,可以先允许任何人都有权限
'as access' => [ 'class' => 'mdm\admin\components\AccessControl', 'allowActions' => [ //这里是允许访问的action '*' ] ],
- 参考于 白狼栈
附录
vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql
/** * Database schema required by \yii\rbac\DbManager. * * @author Qiang Xue <qiang.xue@gmail.com> * @author Alexander Kochetov <creocoder@gmail.com> * @link http://www.yiiframework.com/ * @copyright 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ * @since 2.0 */ drop table if exists `auth_assignment`; drop table if exists `auth_item_child`; drop table if exists `auth_item`; drop table if exists `auth_rule`; create table `auth_rule` ( `name` varchar(64) not null, `data` text, `created_at` integer, `updated_at` integer, primary key (`name`) ) engine InnoDB; create table `auth_item` ( `name` varchar(64) not null, `type` integer not null, `description` text, `rule_name` varchar(64), `data` text, `created_at` integer, `updated_at` integer, primary key (`name`), foreign key (`rule_name`) references `auth_rule` (`name`) on delete set null on update cascade, key `type` (`type`) ) engine InnoDB; create table `auth_item_child` ( `parent` varchar(64) not null, `child` varchar(64) not null, primary key (`parent`, `child`), foreign key (`parent`) references `auth_item` (`name`) on delete cascade on update cascade, foreign key (`child`) references `auth_item` (`name`) on delete cascade on update cascade ) engine InnoDB; create table `auth_assignment` ( `item_name` varchar(64) not null, `user_id` varchar(64) not null, `created_at` integer, primary key (`item_name`, `user_id`), foreign key (`item_name`) references `auth_item` (`name`) on delete cascade on update cascade ) engine InnoDB;
2024年9月23日 09:54
想想你的文章写的特别好