esempla/yii2-rbac

基于角色的访问控制

安装次数: 1,202

依赖项: 0

建议者: 0

安全性: 0

类型:yii2-extensions

1.0.2 2018-12-10 10:09 UTC

This package is auto-updated.

Last update: 2024-09-17 23:30:22 UTC


README

安装

安装此扩展的首选方法是使用composer

注意:请检查此扩展的composer.json文件以了解其要求和依赖关系。阅读有关设置应用程序的composer.json中的minimum-stability设置的web提示/维基。

运行以下命令之一:

$ php composer.phar require esempla/yii2-rbac "1.0.*"

或者添加以下内容到您的composer.json文件的require部分:

"esempla/yii2-rbac": "1.0.*"

迁移

此扩展已创建带有数据库表。您应执行数据库迁移。(推荐使用PostgreSQL®)

php yii migrate/up --migrationPath=vendor/esempla/yii2-rbac/src/migrations

模块

此扩展已作为模块创建。您应使用以下名称配置模块:authManager,如下所示

'modules' => [
	...
	'rbac' => [
		'class' => 'esempla\rbac\Module',
	]
	...
],

并设置默认使用的authManager组件

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

为根配置设置Url Manager(推荐使用common/config®)

'components' => [
    ...
	'urlManager' => [
                        'class' => 'yii\web\UrlManager',
                        'showScriptName' => false,   // Disable index.php
                        'enablePrettyUrl' => true,   // Disable r= routes
                        'rules' => [
                                '<controller:[-\w]+>/<id:\d+>' => '<controller>/view',
                                '<controller:[-\w]+>/<action:[-\w]+>/<id:\d+>' => '<controller>/<action>',
                                '<controller:[-\w]+>/<action:[-\w]+>' => '<controller>/<action>',
                                '<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>' =>'<module>/<controller>/<action>',
                    '<module:\w+>/<controller:\w+>/<action:\w+>' =>	'<module>/<controller>/<action>',
                 ]
    		],
	...
 ],

为启用Rewrite Module配置.config .htaccess(以重写index.php和获取参数)(推荐使用backend/web®或/和frontend/web®)

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

允许的路由

(需要启用路由验证)

将'as access'添加到配置文件(后端或/和前端config.php)。要添加公共路由,请在新路由中添加allowActions部分。(后端或/和前端config.php)注意:此配置允许访客的路由

'as access' => [
		'class' => esempla\rbac\filters\AccessControl::class,
			'allowActions' => [
				'site/*',
				'rbac/*',
				'test/*'
			]
    ]

默认角色

要设置默认角色,请将参数添加到您的params.php(推荐使用common/params.php®)

 return [
      'default_roles' => json_encode(
                  [
                      [
                          "created_user" => "example_id",
                          "created_datetime" => "example_date",
                          "role" => "user",
                          "permissions" => [
                              "/site/index",
                              "/site/manage",
                                ...
                          ]
                      ],
                      [
                          "created_user" => "example_id",
                          "created_datetime" => "example_date",
                          "role" => "user2",
                          "permissions" => [
                              "/site/index",
                              "/site/manage",
                                ...
                          ]
      
                      ]
                  ]),
    ];

国际化

 'components' => [
        ...
		'sourceLanguage' => 'en-US',
		'i18n' => [
			'translations' => [
					'*' => [
							'class' => 'yii\i18n\PhpMessageSource',
							'basePath' => '@vendor/esempla/yii2-rbac/src/messages',
							'sourceLanguage' => 'en-US',
							'forceTranslation'=>true,
							'fileMap' => [
								'rbac' => 'rbac.php',
							],
						] 
				    ]       
	            ]
        ...
]

测试

将配置添加到您的后端/前端config/test.php

        'components' => [
				urlManager' => [
					'showScriptName' => true,
				],
				'db' => [
				'class' => 'yii\db\Connection',
				'dsn' => 'pgsql:host=localhost;port=5432;dbname=secondday',
				'username' => 'postgres',
				'password' => 'postgres',
				'charset' => 'utf8',
			],
        ],

要访问RBAC,请转到/rbac/index

从终端执行以下操作

           cd vendor/esempla/yii2-rbac &&
		   php ../../../vendor/bin/codecept run unit

所有测试必须返回true