0
  1. 如何使用gii在yii2中创建权限、角色和规则?
  2. yii2中如何分配角色?

如何使用以下 4 个表来实现所有这些?

  1. auth_item
  2. auth_item_child
  3. auth_assignment
  4. auth_rule

考虑以下情况:

有两个用户 Admin 和 FieldOfficer:

我有 SHGProfile CRUD 应用程序。

FieldOfficer 只能访问 SHGProfile 中的创建和查看操作。而管理员可以访问所有创建、查看、更新和删除操作。

这里的角色是管理员和 FieldOfficer。权限是 createGroup、viewGroup、updateGroup 和 deleteGroup

在这里,我们需要在哪个表中创建角色和权限以及如何将其分配给用户?

4

1 回答 1

0

我将在这里解释哪些表包含角色和权限以及如何为用户分配权限:

  1. 在 auth_item 表中插入您的所有角色,即 Admin、FieldOfficer、createGroup、viewGroup、updateGroup、deleteGroup。

  2. 将 createGroup、viewGroup、updateGroup 和 deleteGroup 分配给 auth_item_child 表中的 Admin 角色。

  3. 将 createGroup、viewGroup 分配给 auth_item_child 表中的 FieldOfficer 角色。

  4. 使用角色 id 和用户 id 为 auth_assignment 表中的用户分配权限。仅分配父角色,例如 Admin 或 FieldOfficer。

  5. 现在在您的控制器中使用 AccessControl 根据其角色授予登录用户的访问权限

    public function behaviors()
    {
    
       return [
          'access' => [
          'class' => \yii\filters\AccessControl::className(),
          'only' => ['create', 'view' , 'update' , 'delete'],
          'rules' => [
    
              // allow all actions to Admin role users
              [
                  'allow' => true,
                  'actions' => ['create', 'view' , 'update' , 'delete'],
                  'roles' => ['Admin'],
              ],
              // allow create , view actions to FieldOfficer role users
              [
                  'allow' => true,
                  'actions' => ['create', 'view'],
                  'roles' => ['FieldOfficer'],
              ],
              // everything else is denied
           ],
         ],
       ];
       }
    
于 2017-08-10T05:18:05.657 回答