手机版

Yii2构建后台和实现rbac权限控制的完整示例教程

时间:2021-11-02 来源:互联网 编辑:宝哥软件园 浏览:

1.安装yii2。

如果没有安装,请参考yii2历史上最简单的安装教程。没有人。

已安装,请继续查看下一步。

2.配置数据库。

2.1配置数据库

修改common/config/main-local.php实际项目中的本地数据库往往与在线数据库不一致,

在这里,我们可以在main-local.php配置它。产品上线后,我们可以使用git或svn忽略main-local.php,直接在线部署。

我们在这里使用的mysql数据库配置如下。

当然,上面红圈的信息需要自己手动修改。如果很巧合的话,和我的一样,不用修改。

2.2创建用户数据表,我们稍后在后台登录。

描述:关于用户表和菜单表的创建,请参考后面下载的组件yii2-admin中的sql。具体目录位于。

供应商\ MDM soft \ yii 2-admin \ migrations \ schema-MySQL . SQL创建表“用户”(ID`int (11)不为null auto _ increment注释“自增ID”、“username`varchar (255)不为null注释“username”、“auth _ key`varchar (32)不为null注释“自动登录密钥”、“password _ hash` varchar (255)不为null注释“加密密码”、“password _ reset _ token ` varchar(255)默认为null注释“重置密码” ` role` slim (6)不为null默认值' 10' comment' role level ',` status`smallish (6)不为null默认值' 10' comment' status ',` created _ at`int (11)不为null注释' creation time ',` updated _ at`int (11)不为null注释' update time ',Primarykey(` id `))engine=innodbuuto _ increment=0 default charset=utf8 comment=' user table '; 2.3访问前端站点,先注册用户。

注册成功后,登录状态会显示在右上角,我们稍后会使用这个注册用户。

接下来,我们将开始配置背景模板。

3.用AdminLTE渲染背景模板。

在后台,我们使用admin LTE(yii 2框架的后端主题)。

休息一下:AdminLTE是一个完全响应的管理模板。基于Bootstrap3框架,模板易于定制。适用于从小型移动设备到大型台式机的各种屏幕分辨率。

内置多个页面,包括仪表盘、邮箱、日历、锁屏、登录和注册、404错误、500错误等等。

3.1安装AdminLTE。

https://github.com/dmstr/yii2-adminlte-asset

打开上面的链接,按照步骤进行安装。

这里我简单描述一下我的安装步骤。cd升级后,

因为是mac,可以直接从composer这里安装。

composer需要dmstr/yii2-adminlte-asset '2。*'

成功安装后,供应商目录中还会有几个文件夹,如下所示。

3.2 yii2配置集成了AdminLTE,打造帅气高档的背景。

让我们先配置后端/config/main.php来预览效果。小心脏渴望快速尝试结果。

组件'=[' view '=[' theme '=[' path map '=[' @ app/view '=' @ vendor/dmstr/yii 2-adminlte-asset/example-view/yiisoft/yii 2-app '],],],]

很好,页面立刻看起来好多了。

问题来了。我们在组件中单独配置主题,所以以后修改布局文件什么的非常不方便。让我们复制非本地文件,覆盖yii的布局。

复制供应商/dmstr/yii 2-admin LTE-asset/example-view/yii isoft/yii 2-app目录中的布局和站点。

覆盖后端/视图/目录中对应于启动和站点的文件。

覆盖后,记得屏蔽组件下视图的配置项。

至此,后台模板的建设已经告一段落,没有si的si很开心。

4.接下来,我们使用yii的rbac来实现后台的权限控制。

4.1我们先配置短路由。

后端/config/main.php文件的内容加上以下配置。

UrlManager'=[//用于表示URL管理器是否启用URL美化功能,在Yii1.1中称为路径格式URL,在YII 2.0中改名为美化。//默认情况下不启用。然而,在实际使用中,尤其是在产品环境中,它通常是启用的。EnablePrettyUrl'=true,//是否启用严格解析。如果启用了严格解析,则要求当前请求应至少匹配一个路由规则。//否则视为无效路由。//此选项仅在enablePrettyUrl启用时有效。Enablestrictparsing'=false。//是否在URL中显示门户脚本。是对美化功能的进一步补充。ShowScriptName'=false,//指定在URL后面继续的后缀,例如。html。仅当enablePrettyUrl启用时有效。后缀'=' ',' rules '=[' controller : \ w/id : \ d '=' controller/view ',' controller : \ w/action : \ w '=' controller/action '],],下一步,创建。项目根目录下的htaccess文件,并添加以下内容。您不能创建此文件。看来你真的需要再磨练一下了。

选项如下symlinksindexignore */*在#上重写引擎如果目录或文件存在,请直接使用它%{REQUEST_FILENAME}!-FreWriteCond % { REQUEST _ FILENAME }!-d #否则转发给index.phpwrewriterule.index.php当然,你的apache必须打开重写模块。

让我们访问gii模块并测试它。

http://localhost/高级/后端/web/gii

验证没问题。

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

当然,所有这些都是为我们准备好的。

打开文件供应商/yiisoft/yii 2/RBAC/迁移/schema-mysql.sql,依次创建数据表。

` auth_assignment `;` auth_item_child `;` auth_item `;` auth_rule `;另外补充菜单表,需要自己创建。

说明:用户表和菜单表可以参考供应商\ MDM soft \ yii 2-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 `外键(` parent `)引用` menu `(` id `)on delete set NULL on update cascade)engine=innodb DEFAULT charset=1

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

按照步骤一步一步安装,与adminlte的安装相同。

安装后,我们将在供应商目录下看到mdmsoft目录。

4.4权限配置

打开后端/config/main.php修改配置。

必须在此处添加模块'=[' admin '=[' class '=' MDM \ admin \ Module ',],'别名'=[' @ MDM/admin '=' @ vendor/MDM soft/yii 2-admin ',],//authManager配置项' components.//authManager组件被添加到组件数组中。有两种方法:phpmmanager和DbManager。///PhpManager将权限关系保存在一个文件中,这里使用的是DbManager。将权限关系保存在数据库中。auth manager '=[' class '=' YII \ RBAC \ dbmanager ','默认角色'=['guest'],],】,4.5我们访问权限模块后效果如何?

http://localhost/高级/后端/web/管理员/路由

嗯,有一个接口,所以让我们加快步骤来检查和接受我们的权限是否成功。

一般来说,这一步是可以的。以后,可以摸索添加路由分配的权利。

下面我们在左侧菜单中添加权限列,代码可以直接复制放在section class='侧边栏'/section中。

Ul class='侧边栏-菜单' Li class=' treeview ' A href=' # ' I class=' fa fa-gears '/I span权限控制/span I class=' fa fa-angle-left pull-right '/I/A ul class=' treeview-menu ' Li class=' treeview ' A href='/admin '管理员/A ul class=' treeview-menu ' lia href='/user ' I class=' fa fa-circle-o '/I后台用户/a/Li class=' treeview ' a ul class=' treeview-Menu ' lia href='/admin/route ' I class=' fa-circle-o '/I route/a/lilia href='/admin/permission ' I class=' fa-circle-o '/I permission/a/Li lia href='/admin/allia href='/admin/assignment ' I class=' fa-circle-o '/I assignment/a/Li lia href='

这样,我们的权限控制就基本结束了。关于许可,需要说明的是:

您应该先添加路线,然后添加权利的名称,然后将权利独立分配给角色或个人。

5.如何用菜单控制菜单?

在步骤4.5中,我们通过直接写ul li来操作左侧的菜单,这样我们就可以通过菜单来控制权限。

但是,第一,操作起来不方便,第二,我们需要修改程序实现来添加或修改任何东西,这对TTM来说也是不方便的。幸运的是,我们家有一场政变,DDV杀人了。

好了,又跑题了。仔细回想一下,是不是因为我们创建了123,456张表和一个没有使用nan的菜单表?如何使用商品?来吧,让我们回到正题上来。

首先让我们访问/admin/menu/index添加几个一级菜单,分别叫做一级1、一级2、一级3。哦,是的,我忘了添加路线。发生了什么事?让我们先访问/管理/路线/索引将左边的路线向右移动,否则将无法创建新菜单。创建菜单时,我们暂时不填写[映射][数据]。

添加后,我们打开布局文件left.php并使用,它们是yii\bootstrap\Nav和MDM \ admin \ components \ menu helper。

menuhelper : getassignedmenu为我们做得很好。

好了,让我们删除4.5中添加的边栏菜单,并添加以下代码来尝试。

echo nav : widget([' encodeLabels '=false,' options'=['class'='侧栏-菜单'],' items '=menuhelper :3360 getassignedmenu(yii : $ app-user-id),]);现在我们基本上可以进行菜单控制权限了。现在你可以继续添加菜单来尝试这个效果。

在这一点上,我们后台和rbac的权限控制可以说是完美的。如果你在尝试的过程中遇到了什么问题,就在下面留言,我们一起来讨论一下。

相关阅读:

Yii2 rbac权限控制的菜单示例教程。

版权声明:Yii2构建后台和实现rbac权限控制的完整示例教程是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。