Yii Framework 1.1.14
Я установил следующее в моем контроллере:
public function accessRules()
{
return array(
array(
'deny',
'controllers' => array(
'site',
'hotels',
'channels'
),
'roles' => array('General')
)
);
}
Я создал собственный CDbAuthManager под названием CDbAuthManagerExtension, объявлено в config / main.php:
'authManager' => array(
'class' => 'CDbAuthManagerExtension',
'connectionID' => 'db'
),
В CDbAuthManagerExtension я объявил мою функцию getRoles ($ user_id).
Но когда я запускаю код, я получаю следующую ошибку:
CDbCommand failed to execute the SQL statement: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'h2g.AuthAssignment' doesn't exist. The SQL statement executed was: SELECT *
FROM `AuthAssignment`
WHERE userid=:userid
Я не хочу настраивать таблицу AuthAssignments и я не понимаю, почему он смотрит на это, когда я определил роли в accessRules функционировать? Кто-нибудь знает, как остановить поиск таблицы AuthAssignments?
Вы используете DbAuthManger
это означает, что он должен искать таблицу БД для получения назначений, он не ищет роли как таковые, он ищет назначения ролей пользователям и определяет, были ли у текущего пользователя вычислены полномочия. и то и другое на основе назначенных ему ролей и ролей, которым разрешено действие.
Если вы не хотите использовать имя AuthAssigment
для таблицы и использовать другую таблицу, вы можете указать это в вашей конфигурации, как это
'authManager' => array(
'class' => 'CDbAuthManagerExtension',
'connectionID' => 'db'
'assignmentTable'=>'MyCustomTable'
),
Есть две другие таблицы, которые вы можете изменить их расположение, а также прочитать CDbAuthManager doc Вот
Если вы однако не хочу иметь стол вообще тогда вы не должны использовать DbAuthManager
и использовать PHPAuthManager, который хранит данные назначения в файле php в виде массива. Он настраивается с помощью CPhpAuthManager см. документ Вот. Вы можете расширить этот класс с вашими настройками и использовать его в вашей конфигурации вместо
Других решений пока нет …