我想在每个模块上设置用户权限。 每个模块都有自己的权限表。最推荐的方法是什么?
原因:我的应用程序只为少数客户提供了一些可选模块。
更新 类似的东西:
表:mod_inventory_permission
id int
User_id int
Read_permission boolean
Write_permission boolean
Admin_permission boolean
答案 0 :(得分:1)
您可以使用RBAC!您可以在其中设置不同的模块,并为每个模块设置不同的权限。
答案 1 :(得分:0)
是的,您可以通过使用Rbac来实现这一点,这可以帮助您将同一应用程序中的用户限制为有限的模块,控制器或操作
您必须按照以下步骤操作,我希望它能为您提供帮助
我建议你使用yii2为rbac提供的auth_表
第1步:导入所有身份验证表
第2步:在类型为1的auth_item表中创建不同的角色,并且type = 2的所有权限
注意强>
请确保您以某种特定模式输入您的权限,我正在使用模块/控制器/操作,
由你来决定如何实施它。
第3步:创建通用控制器并从此通用控制器扩展所有控制器,
在通用控制器中,您必须检查用户是否允许访问他/她不想访问的模块,控制器或操作。
public function beforeAction($action) {
$module = Yii::$app->controller->module->id;
$controller = ucfirst(Yii::$app->controller->id);
$action = Yii::$app->controller->action->id;
if (Yii::$app->user->can($module)) {
if (Yii::$app->user->can($module . '/' . $controller)) {
return true;
}
if (Yii::$app->user->can($module . '/' . $controller . '/' . $action)) {
return true;
}
else {
throw new \yii\web\HttpException(403, 'You are not allowed to view this page');
}
} else {
throw new \yii\web\HttpException(403, 'You are not allowed to view this page');
}
}
beforeAction功能实现3层认证,您可以根据自己的要求进行更改.... 我希望它能帮助你