错误:在 null 上调用成员函数 getRoles()
来自:yii2-admin\models\searchs\AuthItem.php
在第 75 行:
public function search($params)
{
/* @var \yii\rbac\Manager $authManager */
$authManager = Configs::authManager();
if ($this->type == Item::TYPE_ROLE) {
here-> $items = $authManager->getRoles();
} else {
这是因为 yii2-admin\components\configs.php:
在第 148 行:
public static function instance()
{
if (self::$_instance === null) {
$type = ArrayHelper::getValue(Yii::$app->params, 'mdm.admin.configs', []);
if (is_array($type) && !isset($type['class'])) {
$type['class'] = static::className();
}
return self::$_instance = Yii::createObject($type);
}
here-> return self::$_instance;
}
它返回一个配置对象,其中“authManager”为空
根据: Yii2 RBAC DbManager error Call to a member function getRole() on null
和
https://www.yiiframework.com/doc/guide/2.0/en/security-authorization#configuring-rbac-manager
yii2-advanced-app 所需要的只是添加以下内容:
'authManager' => [
'class' => 'common\components\extended\rbac\DbManager',
'cache' => 'cache',
],
到组件数组下的 common\config\main.php
那已经存在并且似乎不会影响来自 rbac 的配置。此外,我尝试将 authManager 添加到控制台、前端和后端配置文件,但没有任何效果。
预期结果:'authManager' => 'DbManager or something'
实际结果:'authManager' => null
yii2 rbac 配置文件正确加载到 db 连接中,但 authManager 始终为空。
这是使用 yii2admin rbac 管理扩展时的问题,但在使用 yii2-advanced-app 作为高级应用程序使用\Yii::$app->authManager
而不是 yii2 rbac时不会Configs::authManager
任何帮助或指示将不胜感激。谢谢你。