zoukankan      html  css  js  c++  java
  • Yii2.0安装后台-为yii2添加后台模板adminlte和权限组件yii2-admin

    一、yii2-adminlte-asset

    adminlte一款基于bootstrap的响应模块。yii2-adminlte-asset更是一款基于yii2框架进行开发的后台主题模版。

    1、安装(安装前先运行composer self-update),执行:

    composer require dmstr/yii2-adminlte-asset "2.*"
    

    等待几分钟完成后, 拷贝 vendordmstryii2-adminlte-assetexample-viewsyiisoftyii2-app 目录下面的文件到项目 backendviews, 可直接进行覆盖替换;打开访问后台主页和登录页:

    2、打开 backendviewslayoutsmain.php,找到body将其class修改如下,可以改变不同的颜色主题:

    "skin-blue",
    "skin-black",
    "skin-red",
    "skin-yellow",
    "skin-purple",
    "skin-green",
    "skin-blue-light",
    "skin-black-light",
    "skin-red-light",
    "skin-yellow-light",
    "skin-purple-light",
    "skin-green-light"
    

    二、yii2-admin权限组件

    yii2-admin是一个基于yii2的权限管理组件,使用它可以快速搭建可视化的权限管理功能;
    1、首先创建yii2的rbac数据表,数据库迁移文件在vendoryiisoftyii2 bac 目录下,执行:

    yii migrate --migrationPath=@yii/rbac/migrations/
    

    输入会会报错提示我们要添加权限组件配置:

    Exception 'yiiaseInvalidConfigException' with message 'You should configure "authManager" component
    

    打开 commonconfigmain.php 文件,在 components 数组中加入 authManager 组件

    //authManager有PhpManager和DbManager两种方式,    
    //PhpManager将权限关系保存在文件里,这里使用的是DbManager方式,将权限关系保存在数据库.    
    "authManager" => [        
        "class" => 'yii
    bacDbManager',
    ],
    

    再次执行迁移就可以了,建立的表含义:

    auth_item:用于存储角色、权限和路由;
    auth_item_child:角色-权限的关联表;
    auth_assignment:用户-角色的关联表

    2、安装yii2-admin:composer require mdmsoft/yii2-admin "~2.0"
    相关配置: backendconfigmain.php

    return [
        //......
        'modules' => [
            'admin' => [        
                'class' => 'mdmadminModule',   
            ],
            //......
        ],
        'aliases' => [    
            '@mdm/admin' => '@vendor/mdmsoft/yii2-admin',
        ],
        'components' => [
            //......
            'authManager' => [        
                'class' => 'yii
    bacDbManager',
                'defaultRoles' => ['guest'],    
            ],
            //......
        ],
        'as access' => [
            'class' => 'mdmadmincomponentsAccessControl',
            'allowActions' => [
                //这里是允许访问的action,不受权限控制
                //controller/action
            ]
        ],
        //......
    ];
    

    现在,我们访问后台任何路由都显示 403 无权限访问,为了开发方便,暂时我们先设置所有都可访问,

    'allowActions' => [
                //这里是允许访问的action,不受权限控制
                //controller/action
                '*'
            ]
    

    下面可以通过浏览器访问如下地址:

    /index.php?r=admin
    /index.php?r=admin/route
    /index.php?r=admin/permission
    /index.php?r=admin/role
    /index.php?r=admin/assignment
    

    这就是yii2-admin的权限管理界面了,但是这么访问太麻烦,我们可以做一个导航管理,让有权限的路由都显示在左侧菜单;

    3、menu菜单实现

    首先建立一个menu表,这个表在yii2中已经为我们准备好了,直接数据迁移:yii migrate/to m140602_111327_create_menu_table.php --migrationPath=@mdm/admin/migrations

    # m140602_111327_create_menu_table.php 是我们要执行的menu数据表,
    # 在vendormdmsoftyii2-adminmigrations目录下,这个每个人可能是不同的,需要自己手动修改
    

    访问 /admin/menu 可以看到菜单管理界面;然后 打开布局文件left.php,修改相应配置,

    <?php
    
    use mdmadmincomponentsMenuHelper;
    use dmstrwidgetsMenu;
    ?>
    
    <aside class="main-sidebar">
        <section class="sidebar">
            <?=
                Menu::widget([
                    'options' => ['class' => 'sidebar-menu', 'data-widget'=> 'tree'],
                    'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id)
                ]);
            ?>
        </section>
    </aside>
    
    

    这样就可以通过在界面操作实现左侧导航管理;
    4、menu菜单使用方法

    /admin/menu/index    #这里添加导航菜单,之前先访问 /admin/menu/index将所有路由添加到表中,否则无法设置路由链接
    
    例如:添加一个"角色管理" 菜单,路由为 “/admin/role”
    

    5、rbac权限使用方法

    //路由设置
    /admin/route/index     #访问将左侧所有路由添加到右侧,即写入路由数据,这里的路由是根据php反射机制自动显示,也可手动增加路由
    
    //权限设置
    /admin/permission/index     #添加一个权限,分配给一个路由,例如:“ 全局权限 ”,右侧加入 “ /* ”;
    
    //角色设置
    /admin/role/index     #添加一个角色,分配给该角色一个权限,例如:“ 超级管理员 ”,右侧加入上一步设置的 “ 全局权限 ”;
    
    //角色分配
    /admin     #分配给用户角色,这里会显示user表中所有用户,例如:“ admin ”,右侧加入上一步设置的角色 “ 超级管理员 ”;
    

    6、完善配置

    之前为了使用方便我们将 /backend/config/main.php,allowActions 设置为 *,现在改为正确设置:

    'as access' => [
            'class' => 'mdmadmincomponentsAccessControl',
            'allowActions' => [
                //这里是允许访问的action,不受权限控制
                //controller/action
                'site/*',
            ]
        ],
    

    未在后台授权的用户访问相关路由都会显示403;

    注意:
    在yii2-admin中可能会出现路由下拉显示异常的问题,详见:https://www.cnblogs.com/meetuj/p/15133860.html

    参考:
    https://github.com/mdmsoft/yii2-admin/blob/3.master/README.md#upgrade-from-2x
    https://blog.csdn.net/wlzx120/article/details/53423032?spm=1001.2014.3001.5506

    https://lulublog.cn/post/16
    https://www.yiichina.com/tutorial/876

  • 相关阅读:
    shell 的多进程
    shell 按行读取文件的内容
    2>&1的意思
    >/dev/null 2>&1
    js 变量作用域
    Premiere Pro 中的键盘快捷键
    premiere pro 2019 mac 破解
    js 空语句
    js 数组原型
    js 奇偶判断
  • 原文地址:https://www.cnblogs.com/meetuj/p/15125268.html
Copyright © 2011-2022 走看看