yii2下安装yii2-admin 简明教程

PHP 林涛 906℃ 0评论

安装yii2

首先安装好advanced高级版的Yii2。

配置数据库连接

创建yii2_advanced数据库,并授权用户。

create database yii2_advanced default charset utf8;

grant all on yii2_advanced.* to yii2_advanced@localhost identified by 'my_yii2_advanced_password';

修改本地配置文件<project>/common/config/main-local.php内容,这里使用的mysql数据库,配置如下:

'db' => [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=yii2_advanced',
    'username' => 'yii2_advanced',
    'password' => 'my_yii2_advanced_password',
    'charset' => 'utf8',
],

使用composer安装yii2-admin

安装yii2-admin之前,假定操作系统已经安装了全局的composer

composer require mdmsoft/yii2-admin "~2.0"

配置yii2-admin运行环境

因为仅将权限控制应用于后台backend模块,所以这里将配置写到<project>/backend/config/main.php文件里,依次小心添加如下内容。

return [
    'modules' => [
        'admin' => [
            'class' => 'mdm\admin\Module',
             'layout' => 'left-menu',//yii2-admin的导航菜单
        ]
        ...
    ],
    ...
    '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相关表

这里有两种办法建立相应的表。

  • 使用迁移命令
php yii migrate --migrationPath=@yii/rbac/migrations

如果想通过运行上面的命令得到相应表需要如下配置
在 <project>/console/config/main.php 中添加如下代码:

'components' => [
    'authManager' => [
        'class' => 'yii\rbac\DbManager',
    ],
],

关闭终端,重新打开终端执行上面的迁移命令使迁移生效。

  • 执行SQL语句
    其中sql文件保存在<project>/vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql里,复制到MySQL的客户端工具中执行即可。

至此完成安装。

通过访问地址栏http://localhost/yii2/advanced/backend/web/index.php?r=admin查看效果,如下:

配置授权demo

以一个自定义的节点goods为例,节点goods下共有index-商品列表,view-查看商品,create-创建商品,update-更新商品,delete-删除商品这五个子节点,可以通过gii生成这些代码。

配置目标:

  • 未登录用户仅能访问index节点
  • 一般登录用户能访问index,view,create三个节点
  • 管理员能访问所有节点

添加可分配权限列表

点击yii2-admin路由列表页,点击可用输入框后面的刷新图标将列出当前网站所有可用的路由列表,新增goods各节点路由表添加至右侧可分配路由列表中,如下。

添加权限

点击yii2-admin权限列表=>新增权限,填好名称提交后,添加对应的路由规则即可,如下。

填好名称描述后提交,进入到如下页面,选中相关路由点击加入到右边。

左侧的可用列表中除了路由列表还有已经添加了的权限列表,即一个权限可以包含另一个权限。

添加角色并分配权限

点击yii2-admin角色列表=>新增角色,分别添加管理员、一般用户、未登录用户,并分配权限,如下。

填好名称描述后提交,进入到如下页面,选中相关权限点击加入到右边。

分配角色

点击yii2-admin分配界面列出来的用户名是当前系统中已注册的用户,这里注册一个admin和test进行测试。其中admin为管理员角色,test为一般用户。


单击图上的‘小眼睛’按钮,进行分配角色,如下:

按需要将test用户也加入到一般用户的角色组中,给予相应的权限。

  1. 以管理员身份登录时,可进行所有操作。符合预期。
  2. 但是如果不登录,在访问goods首页时会跳转到登录页面。预期结果是未登录时能访问goods首页,就是说当前系统默认不认可我们配置给未登录用户的权限。
    只需要在配置文件中加一行指定默认规则的代码即可,如下:
'authManager'=> [
    'class' => 'yii\rbac\DbManager',
    'defaultRoles' => ['未登录用户'],//添加此行代码,指定默认规则为 '未登录用户'
],

经过上面的配置,在用户未登录时再访问goods/index节点就能正常显示了,点别的操作如goods/update时会跳到登录页面,因为上面配置了未登录角色只能访问/goods/index节点,未登录时仅有访问首页的权限。

另外除了在authManager中配置默认权限,在as access中也可以配置允许所有人访问的节点。

'as access' => [
    'allowActions' => [//下面列出的节点,所有人都可以访问,针对未登录用户的配置也可以移至这里
        'admin/*',
        'site/*',
        'gii/*',
    ]
],

至此,关于yii2-admin相关的权限管理告一段落,然而并没有使用到menu表对后台菜单进行权限控制,以及rule表精细化控制权限(可参考这里)。通过RBAC集成AdminLTE后台主题对菜单进行控制。

如需转载请注明: 转载自26点的博客

本文链接地址: yii2下安装yii2-admin 简明教程

转载请注明:26点的博客 » yii2下安装yii2-admin 简明教程

喜欢 (2)
发表我的评论
取消评论

表情