corpix
(I Am Corpix)
October 30, 2009, 11:11am
1
Здравствуйте.
Пользуюсь CPhpAuthManager и очень рад(делал всё по одному из мануалов в сети…кажется с yiiframework.ru ), всё вроде бы работает как часы.
Все роли верно определяются, но.
<?
class PanelController extends CController {
public function filters() {
return array ('accessControl' );
}
public function accessRules() {
return array (
array ('allow', 'roles' => array ('administrator' ) ),
array ('deny', 'users' => array ('*' ) ) );
}
public function actionIndex() {
$this->render ( 'index' );
}
public function actionMenu() {
$this->render ( 'menu' );
}
}
Я имею роль администратора, но при выполнении любого экшена из контроллера accessControl почемуто меня администратором не считает,
хотя Yii::app ()->user->checkAccess ( ‘administrator’ ) возвращает true.
Использовал версию 1.0.8, подумал, что баг, обновился до 1.0.10…таже фигня. Не понимаю почему так.
p.s. какой бы роли я не разрешил действия в accessRules она автоматически "вылетает"
corpix
(I Am Corpix)
November 2, 2009, 4:25am
2
Неужели никто не знает решения?..очень сомневаюсь, что никто из присутствующих на форуме…да и вообще просмотревших этот топик такого не делал
незнаю как с CPhpAuthManager но с CDbAuthManager все работает замечательно
corpix
(I Am Corpix)
November 5, 2009, 12:54pm
4
Чтож…в таком случае буду изучать код accessControl и CPhpAuthManager…уж очень странное явление =(
creocoder
(Creocoder)
November 5, 2009, 5:36pm
5
to corpix
поменяй местами
array ('allow', 'roles' => array ('administrator' ) ),
array ('deny', 'users' => array ('*' ) ) );
Если я не ошибаюсь то проверка прав идет по нисходящей
creocoder:
поменяй местами
array ('allow', 'roles' => array ('administrator' ) ),
array ('deny', 'users' => array ('*' ) ) );
Если я не ошибаюсь то проверка прав идет по нисходящей
абсолютно не имеет никакого значения сначало идут запрещающие правила, потом разрешающие
corpix
(I Am Corpix)
November 11, 2009, 3:46am
7
creocoder:
to corpix
поменяй местами
array ('allow', 'roles' => array ('administrator' ) ),
array ('deny', 'users' => array ('*' ) ) );
Если я не ошибаюсь то проверка прав идет по нисходящей
И вправду, никакой разницы…
Проблема остаётся открытой.
corpix
(I Am Corpix)
November 11, 2009, 4:15am
8
Всё…я понял в чём была проблема…моя ошибка.
protected function isRoleMatched($user)
{
if(empty($this->roles))
return true;
foreach($this->roles as $role)
{
if($user->checkAccess($role))
return true;
}
return false;
}
if($user->checkAccess($role))
checkAccess() я немножко переопределил…
andryam
(Andryam)
November 18, 2009, 9:35am
9
corpix:
Всё…я понял в чём была проблема…моя ошибка.
protected function isRoleMatched($user)
{
if(empty($this->roles))
return true;
foreach($this->roles as $role)
{
if($user->checkAccess($role))
return true;
}
return false;
}
if($user->checkAccess($role))
checkAccess() я немножко переопределил…
интересна реализация, если не затруднит, сможете выложить рабочий код, буду очень благодарен вам. Сам я только недавно начал изучать Yii, и пока не всё так легко даётся с первого раза