Yii 2.0 搭建基于RBAC权限的后台管理系统 (二)

三、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
Windows创建 .htaccess文件
cd  D:\Development\Environment\xampp\htdocs\advanced\backend\web
输入copy con .htaccess 回车 (不会看到变化),然后再按ctrl+Z键,再回车,然后就创建了
通过访问地址栏http://backend.test/admin查看效果,如下:

到这里准备工作基本就绪,开始集成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权限配置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值