【发布时间】:2020-01-14 03:58:08
【问题描述】:
我正在项目中实施 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);
您对该解决方案有何看法?这样对吗?谢谢。
【问题讨论】:
-
这行不通。
DbManager::removeAll还删除所有角色、权限和规则,而不仅仅是分配。您将无法在 auth_assigment 表中插入任何内容,因为 item_name 不会存在于 auth_item 表中。在 removeAll 之后,您需要再次创建所有内容,而不仅仅是分配。 -
为什么要删除所有
auth_assignment数据?您是第一次设置项目吗?如果 yes 你不需要这样做,如果 No ,那么 你不应该这样做。
标签: database authentication yii2 roles rbac