三、RBAC集成AdminLTE后台主题对菜单进行控制
1. 配置APACHE虚拟主机
在 <XAMPP安装路径>\apache\conf\extra\httpd-vhosts.conf文件末尾追加
<VirtualHost *:80>
ServerName frontend.test
DocumentRoot "project_path/advanced/frontend/web/"
<Directory "project_path/advanced/frontend/web/">
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# use index.php as index file
DirectoryIndex index.php
# ...other settings...
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName backend.test
DocumentRoot "project_path/advanced/backend/web/"
<Directory "project_path/advanced/backend/web/">
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# use index.php as index file
DirectoryIndex index.php
# ...other settings...
</Directory>
</VirtualHost>
2. 配置本地HOST:
在C:\WINDOWS\System32\drivers\etc\HOSTS文件里追加
127.0.0.1 backend.test
127.0.0.1 frontend.test
3. 创建数据库并配置数据库链接
create database yii2_advanced default charset utf8;
修改本地配置文件<项目根目录>/common/config/main-local.php内容,这里使用的mysql数据库,配置如下:
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2_advanced',
'username' => 'yii2_advanced_username',
'password' => 'yii2_advanced_password',
'charset' => 'utf8',
],
4. 配置yii2-admin运行环境
安装yii2.0-admin
composer require mdmsoft/yii2-admin "~2.0"
因为仅将权限控制应用于后台backend模块,所以这里将配置写到<项目根目录>/backend/config/main.php文件里,依次小心添加如下内容。
return [
'modules' => [
'admin' => [
'class' => 'mdm\admin\Module',
]
],
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager', // 使用数据库管理配置文件
]
],
'as access' => [
'class' => 'mdm\admin\components\AccessControl',
'allowActions' => [
'site/*',//允许访问的节点,可自行添加
'admin/*',//允许所有人访问admin节点及其子节点
]
],
];
创建数据库表
创建用户表和菜单表
这里通过命令行运行命令的方式,使用迁移文件进行数据库表的创建。
> 运行以下命令前请保证数据库中不存在相关表。
php yii migrate --migrationPath=@mdm/admin/migrations
上面的命令会在数据库创建user表和menu表。
创建RBAC相关表
建表语句存放在<项目根目录>/vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql文件中,在MySQL数据库中执行分别得到auth_assignment、auth_item_child、auth_item、auth_rule四个表。
配置简短路由
<项目根目录>/backend/config/main.php文件的compontents数组里加上下面的配置:
"urlManager" => [
"enablePrettyUrl" => true,
"enableStrictParsing" => false,
"showScriptName" => false,
"suffix" => "",
"rules" => [
"<controller:\w+>/<id:\d+>"=>"<controller>/view",
"<controller:\w+>/<action:\w+>"=>"<controller>/<action>"
],
],
然后在 <项目根目录>/backend/web下面创建.htaccess文件并添加如下内容
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
cd D:\Development\Environment\xampp\htdocs\advanced\backend\web
输入copy con .htaccess 回车 (不会看到变化),然后再按ctrl+Z键,再回车,然后就创建了
到这里准备工作基本就绪,开始集成Yii的第三方资源插件。
四、Yii2整合AdminLTE后台主题
安装AdminLTE
在项目根目录(advanced)下执行
composer require dmstr/yii2-adminlte-asset "2.*"
复制整个<项目根目录>vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app目录下的 layout 目录和 site 目录到backend/views,覆盖原始文件。
成功后注册一个新用户:
进入http://frontend.test/点击右上角 Signup 注册一个新用户
现在我们访问一下后台管理地址
http://backend.test/
这样基于Yii2.0的RBAC的权限管理系统就搭建了一部分啦。下一篇RBAC权限配置。