如何将 Yeesoft/Yii2 cms RBAC(基于角色的访问控制)与 YII2 前端 RBAC 集成?
How to integrate Yeesoft/Yii2 cms RBAC (Role Based Access Control) with YII2 frontend RBAC?
我一直在使用yii2高级模板,现在我想实现
一些 RBAC 到我的前端项目的控制器中。
我对 https://github.com/yeesoft/yii2-yee-cms 的 Yeesoft's/Yii2 cms RBAC 控制面板印象深刻,尽管我可能不会使用他们的很多内容管理功能。然而,它的控制面板给我留下了深刻的印象,我想用它来控制前端访问,为我的员工提供某些权限。
我已将此代码包含在其组件部分下的 frontend\config\main.php 中。
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager'
],
]
这使我能够在前端控制器中包含如下代码
if (!\Yii::$app->user->can('createEmployee')) {
throw new \yii\web\ForbiddenHttpException('You do not have permission to create an employee.');
}
控制访问。
我正在使用 yeesoft 的数据库,并且正在考虑将我的所有数据从我的前端数据库迁移到 yeesoft 的 cms 数据库,因为我可以使用控制面板在它下面创建权限并访问权限数据,而无需编写大量的控制台迁移代码使用
Yii::$app->authManager;
和其他类似如下的复杂代码:
$auth = Yii::$app->authManager;
//create the permission
$manageCleansbutnotusers = $auth->createPermission('manageCleansbutnotusers');
$manageCleansbutnotusers->description = 'Manage Cleans but not Users';
//add the permission
$auth->add($manageCleansbutnotusers);
//create the permission
$manageCleansandusers = $auth->createPermission('manageCleansandusers');
$manageCleansandusers->description = 'Manage Cleans and Users';
//add the permission
$auth->add($manageCleansandusers);
//create the role
$moderator = $auth->createRole('moderator');
$moderator->description = 'Moderator';
//add the role
$auth->add($moderator);
//attach the permissions to the role
$auth->addChild($moderator, $manageCleansbutnotusers);
//create the role
$admin = $auth->createRole('admin');
$admin->description = 'Administrator';
//add the role
$auth->add($admin);
//attach both permissions to the admin role
$auth->addChild($admin, $moderator);
$auth->addChild($admin, $manageCleansandusers);
我过去曾将其用于迁移目的。
有人可以告诉我更好的方法是什么吗?我确定有人使用 Yeesoft cms 控制面板来控制对前端的访问,而不必诉诸以下方法:
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager'
],
]
在Yii2高级设置中:前端和后端应用程序各有自己的配置。通用配置可用于前端和后端具有共性的实例。例如,数据库、AD 登录或挂钩扩展的配置。
- 后端 - 后端 Web 应用程序。
- 通用 - 所有应用程序通用的文件。
- console - 控制台应用程序。
- environments - 环境配置。
- 前端 - 前端 Web 应用程序。
我一直在使用yii2高级模板,现在我想实现 一些 RBAC 到我的前端项目的控制器中。
我对 https://github.com/yeesoft/yii2-yee-cms 的 Yeesoft's/Yii2 cms RBAC 控制面板印象深刻,尽管我可能不会使用他们的很多内容管理功能。然而,它的控制面板给我留下了深刻的印象,我想用它来控制前端访问,为我的员工提供某些权限。
我已将此代码包含在其组件部分下的 frontend\config\main.php 中。
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager'
],
]
这使我能够在前端控制器中包含如下代码
if (!\Yii::$app->user->can('createEmployee')) {
throw new \yii\web\ForbiddenHttpException('You do not have permission to create an employee.');
}
控制访问。
我正在使用 yeesoft 的数据库,并且正在考虑将我的所有数据从我的前端数据库迁移到 yeesoft 的 cms 数据库,因为我可以使用控制面板在它下面创建权限并访问权限数据,而无需编写大量的控制台迁移代码使用
Yii::$app->authManager;
和其他类似如下的复杂代码:
$auth = Yii::$app->authManager;
//create the permission
$manageCleansbutnotusers = $auth->createPermission('manageCleansbutnotusers');
$manageCleansbutnotusers->description = 'Manage Cleans but not Users';
//add the permission
$auth->add($manageCleansbutnotusers);
//create the permission
$manageCleansandusers = $auth->createPermission('manageCleansandusers');
$manageCleansandusers->description = 'Manage Cleans and Users';
//add the permission
$auth->add($manageCleansandusers);
//create the role
$moderator = $auth->createRole('moderator');
$moderator->description = 'Moderator';
//add the role
$auth->add($moderator);
//attach the permissions to the role
$auth->addChild($moderator, $manageCleansbutnotusers);
//create the role
$admin = $auth->createRole('admin');
$admin->description = 'Administrator';
//add the role
$auth->add($admin);
//attach both permissions to the admin role
$auth->addChild($admin, $moderator);
$auth->addChild($admin, $manageCleansandusers);
我过去曾将其用于迁移目的。
有人可以告诉我更好的方法是什么吗?我确定有人使用 Yeesoft cms 控制面板来控制对前端的访问,而不必诉诸以下方法:
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager'
],
]
在Yii2高级设置中:前端和后端应用程序各有自己的配置。通用配置可用于前端和后端具有共性的实例。例如,数据库、AD 登录或挂钩扩展的配置。
- 后端 - 后端 Web 应用程序。
- 通用 - 所有应用程序通用的文件。
- console - 控制台应用程序。
- environments - 环境配置。
- 前端 - 前端 Web 应用程序。