设置Yii2中每个模块的用户权限

设置Yii2中每个模块的用户权限,yii2,Yii2,我想设置每个模块的用户权限。 每个模块都有其具有权限的表。最推荐的方法是什么 原因:我的应用程序有一些可选模块,仅适用于少数客户端 更新 比如: 表:mod_inventory_权限 您可以使用RBAC进行访问!您可以在其中设置不同的模块,并为每个模块设置不同的权限。是的,您可以通过使用Rbac来实现这一点,这便于您将同一应用程序中的用户限制为有限的模块、控制器或操作 你必须遵循以下步骤,我希望这会对你有所帮助。 我建议您使用yii2为rbac提供的auth_uu表 步骤1:导入所有身份验证表

我想设置每个模块的用户权限。 每个模块都有其具有权限的表。最推荐的方法是什么

原因:我的应用程序有一些可选模块,仅适用于少数客户端

更新 比如:

表:mod_inventory_权限


您可以使用RBAC进行访问!您可以在其中设置不同的模块,并为每个模块设置不同的权限。

是的,您可以通过使用Rbac来实现这一点,这便于您将同一应用程序中的用户限制为有限的模块、控制器或操作 你必须遵循以下步骤,我希望这会对你有所帮助。 我建议您使用yii2为rbac提供的auth_uu表 步骤1:导入所有身份验证表 步骤2:在类型为1的auth_项目表和类型为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功能实现三层身份验证,您可以根据自己的要求进行更改。。。。
我希望它能帮助您

每个模块都会有一个表,其中包含权限,这是您遇到的问题还是您的方法的一部分?我想知道这是否是一个好的选择?我如何在模块中进行控制?签出模块。它可以限制您的模块构建访问规则,并将它们分配给每个用户或用户角色。这是我的想法,但我从未使用过RBAC。我可以在所有客户身上使用它吗?例如,在同一个应用程序中,可能有库存模块,也可能没有库存模块,您可以随心所欲。为了限制用户执行特定的操作、模块、模块内的控制器等,我喜欢这个想法,我将研究这个解决方案。谢谢大家!!经过大量研究,我也实现了它。它将帮助您调试,因为您不必在每个控制器和操作中检查它
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');
        }
    }