justcoded/yii2-rbac

此包已被弃用,不再维护。未建议替代包。

Yii2 RBAC 模块

安装: 3,770

依赖者: 2

建议者: 0

安全: 0

星标: 4

关注者: 9

分支: 3

开放问题: 3

类型:yii2-extension

1.2.2 2020-11-02 11:34 UTC

This package is auto-updated.

Last update: 2023-09-29 02:05:54 UTC


README

993323

Yii 2 JustCoded RBAC 扩展


基于路由的访问扩展 RBAC 管理器。

特性

预定义角色和权限

默认情况下,此扩展初始化以下角色和权限

权限

  • * - 权限。所有其他权限的父级
  • administer - 您可以使用它来检查访问管理员面板的权限

角色

  • 访客 - 未认证的用户
  • 认证用户 - 认证用户(您需要自行添加用户)
  • 管理员 - 拥有 administer 权限,因此可以访问管理员面板
  • 超级用户 - 拥有 * 权限,可以访问所有内容

路由扫描器

特殊的控制台命令(或 GUI 界面)具有扫描您的项目文件并导入以下权限的功能

  • {controller->uniqueId}/*
  • {controller->uniqueId}/{action->id}

您可以创建额外的角色(或将权限添加到现有角色),以配置您的系统高级访问。

路由访问过滤器

在 RBAC 配置中,最常见的事情是关闭对网站某些部分(登录区域、不同用户角色、管理员区域等)的访问。

扩展提供类似于标准 AccessControl 的过滤器,它在页面加载时检查 {controller->uniqueId}/*{controller->uniqueId}/{action->id} 权限,如果您无权访问路由,则抛出 403 错误。

GUI

简单的 GUI* 界面来管理您的角色和权限。

注意: GUI 仍具有 alpha 版本功能。不要将此 GUI 的访问权限分享给您的客户!

安装

安装此扩展的最佳方式是通过 composer。

运行以下命令之一:

php composer.phar require --prefer-dist justcoded/yii2-rbac "*"

或将其添加到您的 composer.json 文件的 require 部分:

"justcoded/yii2-rbac": "*"

配置

组件设置

要使用 RBAC 扩展,您需要在应用程序配置中配置组件数组

'modules' => [
	...
	'rbac' => [
		'class' => 'justcoded\yii2\rbac\Module'
	],
	...
],
'components' => [
	...
	'authManager' => [
		'class' => 'justcoded\yii2\rbac\components\DbManager',
		//'class' => 'justcoded\yii2\rbac\components\PhpManager',
	],
	...
],
Bootstrap4 主题支持

默认情况下,所有视图都使用标准的 yii2-bootstrap 包和 Bootstrap v3。如果您使用现代 Bootstrap 4,则可以覆盖一些类以使用 yii2-bootstrap4 包。在您的配置中,您需要重新配置容器依赖项,如下所示

'container' => [
	'definitions' => [
		// you can create your own GrivView to customize all options for main roles and permissions lists.
		'justcoded\yii2\rbac\widgets\RbacGridView' => [
			'class' => \app\modules\admin\widgets\RbacGridView::class,
		],
		// this will replace bootstrap3 ActiveForm with bootstrap4 ActiveForm.
		'justcoded\yii2\rbac\widgets\RbacActiveForm' => [
			'class' => \yii\bootstrap4\ActiveForm::class,
		],
	],
],
  • 注意:您需要手动在您的 composer.json 中添加 yiisoft/yii2-bootstrap4 包依赖项。

基本 RBAC 配置

请按照 官方文档 配置 RBAC 存储(创建必要的文件或数据库表)。

如果您使用 DbManager,则可以使用以下迁移命令初始化数据库表

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

初始化基本角色

在开始使用此扩展之前,您需要初始化预定义为其的默认角色。

为此,您需要运行几个命令

# init base roles and administer/master permission 
php yii rbac/init

# assign master role to some user (in this case user with ID = 1)
php yii rbac/assign-master 1

# scan your application routes
php yii rbac/scan

# ADVANCED TEMPLATE ONLY: scan routes for rbac module.
php yii rbac/scan -p='@vendor/justcoded/yii2-rbac' -b='rbac/'

# BASIC TEMPLATE ONLY: in case you use 'admin' module for backend:
php yii rbac/scan -p='@vendor/justcoded/yii2-rbac' -b='admin/rbac/'

使用方法

GUI 界面

要使用图形界面,只需按照您在扫描路由/配置模块时指定的基本路由即可。

注意:角色权限选择器是一个热补丁解决方案,因此当您在框之间移动项目时,它不会显示正确的树结构。这将在下一个版本中修复。

路由访问过滤器

RouteAccessControl 过滤器可以用于特定的控制器(或全局)内部,以在非常高的级别上控制对控制器操作的访问。

路由扫描器插入以下权限

{controller->uniqueId}/* {controller->uniqueId}/{action->id}

在控制器beforeAction方法中,这个过滤器会检查当前登录用户是否有权限访问这些路由。

要在某个特定的控制器中启用过滤器

	public function actions()
	{
		return [
			'routeAccess' => [
				'class' => 'justcoded\yii2\rbac\filters\RouteAccessControl',
			],
		];
	}

或者您可以在全局配置这个过滤器。在您当前应用程序的配置中,只需添加如下部分

	'as routeAccess' => [
		'class' => 'justcoded\yii2\rbac\filters\RouteAccessControl',
		'allowActions' => [
			'site/*',
		],
		'allowRegexp' => '/(gii)/i', // optional
	],

示例

您可以在我们的Yii2 快速启动套件上查看示例。