Что означает суперпользователь в расширении прав Yii?

Я использую расширение прав Yii и получаю эту ошибку:

There must be at least one superuser!

Я не знаю, что означает этот superuser, так как я использую аутентификацию по умолчанию с пользователем admin и demo. Прочитав документацию по расширению прав, я попытался настроить права с помощью:

'rights'=>array(
    'superuserName'=>'admin',
    'install'=>true
),

Но это не работает, я искал в Интернете, но не получил никакого результата.


person jerry_sjtu    schedule 14.12.2011    source источник


Ответы (7)


вам нужно связать пользовательскую таблицу с таблицей AuthAssignment, имя которой было объявлено в настройке массива

'modules'=>array(
'rights'=>array(
    'superuserName'=>'admin',
     ),
 ),

затем вам нужно изменить поле идентификатора пользователя AuthAssignment таблицы, которое ссылается на идентификатор поля для пользователя таблицы.

person masbenx    schedule 22.11.2012

Если вы установили пользователя и права, такие как здесь, просто запустите это в своей базе данных:

INSERT INTO `AuthAssignment` (`itemname`, `userid`, `bizrule`, `data`) VALUES ('Admin', '1', NULL, 'N');
INSERT INTO `AuthItem` (`name`, `type`, `description`, `bizrule`, `data`) VALUES ('Admin', 0, 'Admin', NULL, 'N;'); 

Примечание. В руководстве все имена таблиц модуля прав указаны в нижнем регистре.

person Amir Hossein Jamsidi    schedule 25.04.2015
comment
Работал на меня. Спасибо. - person Pupil; 05.05.2015

Название немного вводит в заблуждение, я тоже наткнулся на эту проблему.

superuserName должно называться superuserRole, что означает, что все пользователи, которым назначена указанная там роль, являются суперпользователями.

Обратите внимание, что Yii::app()->user->checkAccess('whatever') всегда будет return true для суперпользователей.

См. также RAuthorizer. php:

/**
* @property string the name of the superuser role.
*/
public $superuserName;

и RWebUser.php.

person schmunk    schedule 21.11.2012

FWIW (так как это было так давно), вы должны предоставить одному из ваших пользователей роль суперпользователя.

Это имя роли обозначено в свойстве superuserName в файле конфигурации, как показано в вашем сообщении. Это можно сделать напрямую через SQL, обновив таблицу authAssignment (в вашем случае ее имя может быть другим, оно настраивается).

INSERT INTO `authassignment` (`itemname`, `userid`, `bizrule`, `data`) VALUES ('admin', '1', NULL, 'N;');

Затем войдите в систему как соответствующий пользователь (тот, который соответствует идентификатору # 1, в данном конкретном случае).

person MasterAM    schedule 03.10.2012

есть небольшой хак, строка, которую вы должны закомментировать, чтобы она работала...

проверьте комментарии на официальной странице расширения

EDIT: я не хотел публиковать ссылку на мой собственный блог, потому что это выглядит как самореклама, но я думаю, что это очень полное решение вашей проблемы: установка расширения yii-rights

person Felipe    schedule 03.07.2012

я думаю, вы должны использовать базу данных mysql и пользователя таблицы, а не аутентификацию по умолчанию - это просто пример аутентификации. после того, как вы импортируете пользовательскую таблицу, вы должны добавить пользователя с именем пользователя «admin» - если у вас есть «admin» в конфигурации superuserName - в пользовательской таблице.

person user006779    schedule 15.12.2011

Мне удалось установить его, следуя сообщению на форуме yii - вот постоянная ссылка на мое сообщение: http://www.yiiframework.com/forum/index.php/topic/10556-extension-права/page__view__findpost__p__229721

person Paul Preibisch    schedule 26.11.2013