重新初始化rbac权利

时间:2019-09-12 09:39:23

标签: database authentication yii2 roles rbac

我正在项目中实施RBAC。 rbac / init命令包含代码

$auth = Yii::$app->getAuthManager();
$auth->removeAll();

此代码删除所有权利和分配。我想在auth_assignment表中保存用户和权限对。我尝试提出一种解决方法,以便在RBAC重新初始化时保存auth_assignment表数据

$auth = Yii::$app->getAuthManager();
$data=Yii::$app->db->createCommand('select * from auth_assignment')->queryAll();
$auth->removeAll();
Yii::$app->db->createCommand()->batchInsert('auth_assignment',['item_name','user_id','created_at'],$data);

您如何看待该解决方案?这样对吗?谢谢。

1 个答案:

答案 0 :(得分:1)

我已经经历了这种情况,发现了两种处理分配权限的方法:

  1. 第一种方法是使用控制台:

    yii rbac/init

    这样,您必须在控制台/命令中具有控制器:

    use Yii;
    use yii\console\Controller;
    
    class RbacController extends Controller
    {
        public function actionInit()
        {
            $auth = Yii::$app->authManager;
            $auth->removeAll();
            //...
        }
    }
    
    1. 安装扩展yii2mod/yii2-rbac并动态分配角色。这是link

我发现第二个选项更具生产力和安全性,因为您保留了已分配的角色。希望这会有所帮助。