我正在项目中实施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);
您如何看待该解决方案?这样对吗?谢谢。
答案 0 :(得分:1)
我已经经历了这种情况,发现了两种处理分配权限的方法:
第一种方法是使用控制台:
yii rbac/init
这样,您必须在控制台/命令中具有控制器:
use Yii;
use yii\console\Controller;
class RbacController extends Controller
{
public function actionInit()
{
$auth = Yii::$app->authManager;
$auth->removeAll();
//...
}
}
yii2mod/yii2-rbac
并动态分配角色。这是link。 我发现第二个选项更具生产力和安全性,因为您保留了已分配的角色。希望这会有所帮助。