zoukankan      html  css  js  c++  java
  • yii2搭建完美后台并实现rbac权限控制案例教程

    作者:白狼 出处:www.manks.top/article/yii2_frame_rbac_template 

    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    1、安装yii2

    未安装的请参考yii2史上最简单式安装教程,没有之一

    已安装的请继续看下一步操作

    2、配置数据库

    2.1 配置数据库

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

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

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

    当然啦,上面红圈圈的信息需要你自己手动修改掉,要是十分巧合跟我的一样那就不用在修改了

    2.2 创建user数据表,我们后面要实现后台登陆

    说明:user表和menu表的创建可以参考我们后面下载的组件yii2-admin里面的sql,具体目录位于

    vendor\mdmsoft\yii2-admin\migrations\schema-mysql.sql

    CREATE TABLE `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',  
    `username` varchar(255) NOT NULL COMMENT '用户名',  
    `auth_key` varchar(32) NOT NULL COMMENT '自动登录key',  
    `password_hash` varchar(255) NOT NULL COMMENT '加密密码',  
    `password_reset_token` varchar(255) DEFAULT NULL COMMENT '重置密码token',  
    `email` varchar(255) NOT NULL COMMENT '邮箱',  
    `role` smallint(6) NOT NULL DEFAULT '10' COMMENT '角色等级',  
    `status` smallint(6) NOT NULL DEFAULT '10' COMMENT '状态',  
    `created_at` int(11) NOT NULL COMMENT '创建时间',  
    `updated_at` int(11) NOT NULL COMMENT '更新时间',  
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='用户表';

    2.3 访问frontend站点,先注册个用户

    注册成功后,右上角会显示登陆的状态,我们后面会用到这个注册的用户

    接下来我们要开始配置后台的模板了。

    3、利用AdminLTE渲染后台模板

    后台的模板我们采用利用 AdminLTE(Backend theme for Yii2 Framework)

    插播一曲:AdminLTE是一个完全响应管理模板。基于Bootstrap3框架,易定制模板。适合多种屏幕分辨率,从小型移动设备到大型台式机。

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

    3.1 安装AdminLTE 

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

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

    这里我简述下自己的安装步骤,cd advanced后,

    因为是mac,这里直接composer进行安装就行了
    composer require dmstr/yii2-adminlte-asset "2.*"

    安装成功后,vendor目录下会多几个文件夹,如下

    3.2 yii2配置整合AdminLTE,搭建帅气上档次的后台

    下面我们配置下backend/config/main.php先预览下效果,小心脏捉急的巴不得赶紧尝尝战果

    'components' => [  
        'view' => [
            'theme' => [
                'pathMap' => [                
                    '@app/views' => '@vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app'             
                 ],
            ],
        ],
    ],

    nice,页面瞬间好看多了。

    问题来了,我们是在components里面单独配置的theme,这样以后要修改布局文件什么的是很不方便滴,下面我们把不局文件拷贝下来覆盖掉yii自带的layout.

    把vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app目录下的layouts和site拷贝 

    覆盖掉backend/views/目录下的lauouts和site对应的文件

    覆盖后记得屏蔽掉 components下面view的配置项

    到此,后台模板的搭建告一段落,si不si很happy

    4、下面我们用yii的rbac实现后台的权限控制

    4.1 我们先配置下简短路由 

    backend/config/main.php文件的compontents加上下面的配置

    'urlManager' => [    
        //用于表明urlManager是否启用URL美化功能,在Yii1.1中称为path格式URL,    
        // Yii2.0中改称美化。   
        // 默认不启用。但实际使用中,特别是产品环境,一般都会启用。   
        'enablePrettyUrl' => true,    
        // 是否启用严格解析,如启用严格解析,要求当前请求应至少匹配1个路由规则,    
        // 否则认为是无效路由。    
        // 这个选项仅在 enablePrettyUrl 启用后才有效。    
        'enableStrictParsing' => false,    
        // 是否在URL中显示入口脚本。是对美化功能的进一步补充。    
        'showScriptName' => false,    
        // 指定续接在URL后面的一个后缀,如 .html 之类的。仅在 enablePrettyUrl 启用时有效。    
        'suffix' => '',    
        'rules' => [        
            "<controller:\w+>/<id:\d+>"=>"<controller>/view",  
            "<controller:\w+>/<action:\w+>"=>"<controller>/<action>"    
        ],
    ],

    接下来在项目的根目录 backend/web下面创建.htaccess文件并添加如下内容,这个文件你都创建不下来,看来是真需要再磨练磨练哦

    Options +FollowSymLinks
    IndexIgnore  */*
    
    RewriteEngine on
    
    # if a directory or a file exists, use it directly
    RewriteCond  %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # otherwise forward it to index.php
    RewriteRule . index.php

    当然,你的apache必须要开启rewrite模块。

    下面我们访问下gii模块测试下

    http://localhost/advanced/backend/web/gii

    校验是可以的。

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

    继续阅读

  • 相关阅读:
    0309. Best Time to Buy and Sell Stock with Cooldown (M)
    0621. Task Scheduler (M)
    0106. Construct Binary Tree from Inorder and Postorder Traversal (M)
    0258. Add Digits (E)
    0154. Find Minimum in Rotated Sorted Array II (H)
    0797. All Paths From Source to Target (M)
    0260. Single Number III (M)
    0072. Edit Distance (H)
    0103. Binary Tree Zigzag Level Order Traversal (M)
    0312. Burst Balloons (H)
  • 原文地址:https://www.cnblogs.com/wwolf/p/5401150.html
Copyright © 2011-2022 走看看