Yii2搭建后台并实现rbac权限控制完整实例教程(2)

Options +FollowSymLinks IndexIgnore */* RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php

当然,你的apache必须要开启rewrite模块。

下面我们访问下gii模块测试下

校验是可以的。

4.2 创建权限控制所需要的数据表

当然,这些yii2都给我们准备好了。

打开 vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql 文件,依次创建数据表

`auth_assignment`; `auth_item_child`; `auth_item`; `auth_rule`;

另外补充菜单menu表,需要的自行创建

说明:user表和menu表的创建可以参考 vendor\mdmsoft\yii2-admin\migrations\schema-mysql.sql

CREATE TABLE `menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) NOT NULL, `parent` int(11) DEFAULT NULL, `route` varchar(256) DEFAULT NULL, `order` int(11) DEFAULT NULL, `data` text, PRIMARY KEY (`id`), KEY `parent` (`parent`), CONSTRAINT `menu_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `menu` (`id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8

4.3 下载安装 yii2-admin

参考 https://github.com/mdmsoft/yii2-admin

按照步骤一步一步安装即可,同adminlte的安装

安装好了我们会在vendor目录下面看到 mdmsoft目录

4.4 权限配置

打开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'], ], ... ],

4.5 我们访问下权限模块检验下效果如何

嗯,界面是有的了,下面我们加快脚步验收下我们的权限这块到底成还是不成呢?

一般来说到这一步就ok的了。后面的可以自己摸索着添加路由分配权限了。

下面我们在左侧菜单上把权限的栏目加上,代码可直接复制,放置于 <section></section>内

<ul> <li> <a href="#"> <i></i> <span>权限控制</span> <i></i> </a> <ul> <li> <a href="https://www.jb51.net/admin">管理员</a> <ul> <li><a href="https://www.jb51.net/user"><i></i> 后台用户</a></li> <li> <a href="https://www.jb51.net/admin/role"> <i></i> 权限 <i></i> </a> <ul> <li><a href="https://www.jb51.net/admin/route"><i></i> 路由</a></li> <li><a href="https://www.jb51.net/admin/permission"><i></i> 权限</a></li> <li><a href="https://www.jb51.net/admin/role"><i></i> 角色</a></li> <li><a href="https://www.jb51.net/admin/assignment"><i></i> 分配</a></li> <li><a href="https://www.jb51.net/admin/menu"><i></i> 菜单</a></li> </ul> </li> </ul> </li> </ul> </li> </ul>

我们看下效果图,这样一来,我们对权限进行操作就十分的方便了

如此,我们的权限控制基本告一段落了,关于权限需要说明的是:

你应该先添加路由,然后添加权限名称,后再对角色或个人进行权限的独立分配。

5、如何利用menu对菜单进行控制?

4.5步骤中我们是直接写ul li的方式对左侧菜单进行操作的,这样也是能够实现通过菜单对权限进行控制滴。

但是喃,一来不方便操作,而来增加修改个什么东东都得需要我们去修改程序实现,这也TTM不方便了。还好我们家有妙招,DDV杀杀杀。

好了,又扯远了。仔细回想,是不是我们创建的123456张表还有一张menu表没有利用到喃?这货怎么利用喃?来,我们回归正题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/aaf73b85fec963bf12d2785638acad84.html