在这里我介绍一种快速简单的方法来在 Yii2 高级模版中安装 RBAC(Role Based Access Control) 系统
安装: Yii2 高级模板
在这里使用 composer
安装 yii2 高级模板。假如你的机器中没有 composer
请下载 它的最新版本。安装完成请检查能否在 CMD 中执行 composer
命令:
C:\>composer
如果上述命令给出了正确的输出,就可以进行下面的操作了。
打开一个 CMD 窗口并进入到服务的根目录。我使用的是 wamp
服务,如下:
C:\>cd wamp\www
C:\wamp\www>
然后使用命令 composer create-project --prefer-dist yiisoft/yii2-app-advanced yii2-app
来创建一个名称为 yii2-app
的新应用。
C:\wamp\www>composer create-project --prefer-dist yiisoft/yii2-app-advanced yii2-app
此模板也可以从 github 下载。安装完成后在 CMD 中进入新安装的应用根目录。
C:\wamp\www>cd yii2-app
C:\wamp\www\yii2-app>
接下来需要使用命令 php init
来初始化。初始化会生成应用的入口脚本和配置文件,命令如下:
C:\wamp\www\yii2-app>php init
你可以在给出的选项中选择运行环境的类型:
Which environment do you want the application to be initialized in?
[0] Development
[1] Production
Your choice [0-1, or "q" to quit]
现在安装 yii2 高级模板已经完成,但还没有对应的数据库。我们需要创建一个数据库。首先我们先安装一个 RBAC 模块。这里我使用了 yii2-admin
。步骤如下:
安装: RBAC 系统
在 CMD 窗口中执行命令 composer require mdmsoft/yii2-admin "~2.0"
来安装 yii2-admin
。
C:\wamp\www\yii2-app>composer require mdmsoft/yii2-admin "~2.0"
你可以在 github 下载 yii2-admin
。安装完成后,yii2-admin
被安装在 yii2-app/vendor/mdmsoft
目录。
下面需要在配置文件 yii2-app/common/config/main.php
中添加一些参数来配置 yii2-admin
和 authManager
:
'modules' => [
'admin' => [
'class' => 'mdm\admin\Module',
...
]
...
],
...
'components' => [
...
'authManager' => [
'class' => 'yii\rbac\PhpManager', // or use 'yii\rbac\DbManager'
]
],
创建一个 MySQL 数据库并在配置文件 yii2-app/common/config/main-local.php
中添加数据库信息。当前数据库中没有用户表,需要创建一个用户表。可以使用 yii2 提供的数据库迁移工具。执行命令 yii migrate --migrationPath=@mdm/admin/migrations
来创建一个用户表。
C:\wamp\www\yii2-app>yii migrate --migrationPath=@mdm/admin/migrations
上面的命令会创建 user
和 menu
两张表。
下面在配置文件 yii2-app/common/config/main.php
中修改用户组件的属性:
'components' => [
...
'user' => [
'identityClass' => 'mdm\admin\models\User',
'loginUrl' => ['admin/user/login'],
]
]
通过添加用户来填充 user
表。使用此链接来注册用户
http://localhost/yii2-app/backend/web/index.php?r=admin/user/signup
你可以使用类 'yii\rbac\DbManager'
来对数据库中的用户进行授权。首先需要执行一个数据库迁移命令 yii migrate --migrationPath=@yii/rbac/migrations
。在配置文件 yii2-app/common/config/main.php
中添加 'class' => 'mdm\admin\models\User'
如下:
'components' => [
...
'authManager' => [
'class' => 'yii\rbac\DbManager', // or use 'yii\rbac\PhpManager'
],
'user' => [
'class' => 'mdm\admin\models\User',
'identityClass' => 'mdm\admin\models\User',
'loginUrl' => ['admin/user/login'],
]
]
并在迁移完成后删除配置文件中的 'class' => 'mdm\admin\models\User'
。迁移命令如下:
C:\wamp\www\yii2-app>yii migrate --migrationPath=@yii/rbac/migrations
不要忘了在配置文件 yii2-app/common/config/main.php
删除 'class' => 'mdm\admin\models\User'
。
你可以使用下面的 RBAC 链接创建和管理权限或角色:
http://localhost/yii2-app/backend/web/index.php?r=admin
http://localhost/yii2-app/backend/web/index.php?r=admin/route
http://localhost/yii2-app/backend/web/index.php?r=admin/permission
http://localhost/yii2-app/backend/web/index.php?r=admin/menu
http://localhost/yii2-app/backend/web/index.php?r=admin/role
http://localhost/yii2-app/backend/web/index.php?r=admin/assignment
http://localhost/yii2-app/backend/web/index.php?r=admin/user
你可以创建和管理 routes/permissions/roles
并将它们分配给已有用户。为了验证用户是否有权限进行控制器中的指定的动作,需要在配置文件 yii2-app/common/config/main.php
中添加 access control
。
return [
'modules' => [
....
],
....
'as access' => [
'class' => 'mdm\admin\components\AccessControl',
'allowActions' => [
'site/*',
'admin/*',
]
]
]
你可以在 allowActions
数组中添加公开的动作。其他的侗族将会使用 AccessControl
类验证。
关于 yii2-advanced
和 yii2-admin
的更多信息,请点击:
https://github.com/yiisoft/yii2-app-advanced
https://github.com/mdmsoft/yii2-admin
希望此文对您有所帮助。
快乐的小码农 :)
英文原文: Installation guide: Yii-2 advanced template with RBAC system