imdogma
(Imdogma)
1
Возник такой вопрос: воспользовался методом SamDark’а (статья). Все работает. Только вот не могу в контроллере назначить accessRules.
Пробую так:
public function accessRules()
{
return array(
array('allow',
'actions'=>array('album'),
'roles' => array('administrator'),
),
);
}
И все равно пускает к этому экшену абсолютно всех. Роль определяется правильно (если разлогинен - guest, если залогинен - administrator). В чем беда?
samdark
(Alexander Makarov)
2
Разрешить разрешили, а запретить всем остальным забыли. См. примеры в рецепте. Вроде там есть.
imdogma
(Imdogma)
3
public function accessRules()
{
return array(
array('allow',
'actions'=>array('album'),
'roles' => array('administrator'),
),
);
return array(
array('deny',
'actions'=>array('album'),
'roles' => array('guest'),
),
);
}
Запретил, ничего не изменилось
((
samdark
(Alexander Makarov)
4
После return дальнейшее выполнение кода в пределах метода прекращается.
Надо так:
public function accessRules(){
return array(
array('allow',
'actions'=>array('album'),
'roles' => array('administrator'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
imdogma
(Imdogma)
5
И так не хочет
(( И вот так:
public function accessRules(){
return array(
array('allow',
'actions'=>array('album'),
'roles' => array('administrator'),
),
array('deny',
'actions'=>array('album'),
'users'=>array('*'),
),
);
}
Более того, accessRules вообще напрочь отказывается работать. Пытался закрыть действие для всех:
public function accessRules() {
return array(
array( 'deny' , 'actions' => array('album'), 'users' => array('*') )
);
}
Не хочет
((
imdogma
(Imdogma)
6
Тфу блин, прошу прощения, в функции filters() то я не указал, что использую accessRules(). Проблема решена 