如何在Yii2 Advance App中设置用户权限类型

时间:2018-04-17 02:49:20

标签: php yii2 yii2-advanced-app

所以我有不同的用户角色,即国家管理员,区域管理员,市政管理员和外部用户。在我的用户表上,我有列字段" role"我希望外部用户无法在我生成的CRUD上创建一些东西。我该怎么做?

public function behaviors(){
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['POST'],
            ],
        ],
        'access' => [
            'class' => \yii\filters\AccessControl::className(),
            'only' => ['index','create','update','view'],
            'rules' => [
                // allow authenticated users
                [
                    'allow' => true,
                    'roles' => ['@'],
                ],
                // everything else is denied
            ],
        ],
    ];
}

1 个答案:

答案 0 :(得分:0)

你看过这个: https://www.yiiframework.com/doc/guide/2.0/en/security-authorization#rbac

  1. 使用yii\rbac\DbManager类作为Authentication Manager Component
  2. 运行迁移以创建安全表
  3. 定义您的低级别权限。
  4. roles
  5. 中的behaviors\access下添加它们
  6. 将它们分组为更高级别的权限和角色;分配给 用户
  7. 使用自定义逻辑规则。
  8. 分配默认权限。
  9. 附注:我建议为每个CRUD功能(以及其他操作)单独授予权限。这样,您将永远不会发现自己处于单一权限授予过多访问权限的情况。

    示例:较低级别的权限:

    • createUser
    • updateUser
    • viewUser
    • deleteUser
    • activateUser
    • deactivateUser

    将上述所有权限合并到allActionUser组中,并将其分配给AdminRole个角色。

    viewUseractivateUserdeactivateUser合并到powerUser群组,并将其分配给powerUserRole角色。

    然后为用户分配角色,组和/或单个细化权限。这将为您分配权限和满足您的业务需求(或您的用例)提供最大的多功能性。

    花费额外的时间来理解规则并广泛使用它们来定义自定义逻辑。使用控制器代码覆盖某些内容适用于一个功能,但您很快就会发现它无法很好地扩展。

    规则的一个很好的例子是updateUserSelf。您可能不希望为最终用户分配updateUser权限,因为它将是 wild-west ,因为每个人都将更新每个人的信息。但您肯定希望为最终用户提供更新自己信息的能力。这就是规则的便利之处。