RBAC и описание ролей в файле
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
RBAC и описание ролей в файле
Обновил рецепт «RBAC и описание ролей в файле». Отказался от использования состояний для хранения роли т.к. при использовании allowAutoLogin пользователь останется с прежней ролью до момента повторного логина, что может случиться очень нескоро. Вместо этого роль выбирается из базы каждый раз.
http://yiiframework.ru/doc/cookbook/ru/access.rbac.file
http://yiiframework.ru/doc/cookbook/ru/access.rbac.file
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: RBAC и описание ролей в файле
По-моему идеалогически правильней логику BaseCpntroller перенести в authManager. Однако я не уверен по поводу порядка инициализации компонентов, так что такой вариант отпадает.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
т.е. отнаследоваться от CPhpAuthManager и перекрыть, например, load(), заменив там назначение _assignments?
Вариант. Надо проверить только, будет ли проинициализирован к этому моменту WebUser.
Вариант. Надо проверить только, будет ли проинициализирован к этому моменту WebUser.
Нравится Yii? Давайте сделаем его лучше!.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
Даже не load и не перекрыть… просто перетащить код из базового контроллера в init() нашего нового менеджера авторизации:
Код: Выделить всё
function init(){
parent::init();
// Для гостей у нас и так роль по умолчанию guest.
if(!Yii::app()->user->isGuest){
// Связываем роль, заданную в БД с идентификатором пользователя,
// возвращаемым UserIdentity.getId().
$this->assign(Yii::app()->user->role, Yii::app()->user->id);
}
}
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: RBAC и описание ролей в файле
Я думаю лучше так
Код: Выделить всё
private $wasAssigned=false;
...
public function checkAccess($itemName, $userId, $params=array ( )){
if(!$this->wasAssigned){
$this->wasAssigned=true;
if(!Yii::app()->user->isGuest){
// Связываем роль, заданную в БД с идентификатором пользователя,
// возвращаемым UserIdentity.getId().
$this->assign(Yii::app()->user->role, Yii::app()->user->id);
}
}
return parent::checkAccess($itemName,$userId,$params);
}
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
По-моему в init() логичнее. У нас инициализация пройдёт один раз. Далее объект будет лежать в реестре Yii::app().
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: RBAC и описание ролей в файле
Я с вами согласен, однако мой вариант не зависит от порядка инциализации компонентов.
Re: RBAC и описание ролей в файле
Доброго времени суток.
Программирую с Yii не давно - Newbee.
Вопрос о RBAC. Что и куда сохранять:
Куда сохранить BaseController, WebUser. При сохранении в '/framework/web/' получаю ошибку что требуемый фал не найден.
аналогичную ошибку получаю при попытке сохранить:
WebUser, BaseController в папку protected/components
Буду признателен за Ваш ответ.
Программирую с Yii не давно - Newbee.
Вопрос о RBAC. Что и куда сохранять:
Куда сохранить BaseController, WebUser. При сохранении в '/framework/web/' получаю ошибку что требуемый фал не найден.
аналогичную ошибку получаю при попытке сохранить:
WebUser, BaseController в папку protected/components
Буду признателен за Ваш ответ.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
В protected/components. Убедитесь, что в конфиге есть:
Код: Выделить всё
'import'=>array(
'application.components.*',
Нравится Yii? Давайте сделаем его лучше!.
Re: RBAC и описание ролей в файле
Да прописано.
main.php
Я сейчас прописал BaseController в autoload в YiiBase - вроде больше не ругается на него, хотя пока точно сказать не могу.
А вот WebUser все еще найти не может
main.php
Код: Выделить всё
'import'=>array(
'application.models.*',
'application.components.*'
)
А вот WebUser все еще найти не может
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
Правило №1 — не лезть в framework.
Чтобы увидился WebUser, надо, как и написано в рецепте:
ну и положить его в любое место, прописанное в import. У меня это обычно components.
Чтобы увидился WebUser, надо, как и написано в рецепте:
Код: Выделить всё
'user'=>array(
'class' => 'WebUser',
// …
),
Нравится Yii? Давайте сделаем его лучше!.
Re: RBAC и описание ролей в файле
Спасибо большое!!! Вроде больше не ругается!!
Но сейчас столкнулся с тем что Yii::app()->user->isGuest все время выдаем не что я Guest, когда я уже авторизован в том числе. Назначение ролей тоже не происходит (((
Но сейчас столкнулся с тем что Yii::app()->user->isGuest все время выдаем не что я Guest, когда я уже авторизован в том числе. Назначение ролей тоже не происходит (((
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
Тут только отлаживать код.
Можете создать тему вроде этой: viewtopic.php?f=3&t=224
А можете и самостоятельно.
Можете создать тему вроде этой: viewtopic.php?f=3&t=224
А можете и самостоятельно.
Нравится Yii? Давайте сделаем его лучше!.
Re: RBAC и описание ролей в файле
Хахаха!!! ))) У меня получилось все как описал Sam!!! Спасибо большое!!!!!
Если комуто будет интересно, баг был не в коде, а в среде. Дело в том что, в какой-то момент Denwer стал выдавать мне старые сессии. Вопос был решен рестартом Httpd. Я до сих пор не понял как так это все произошло, но все равно сейчас все работает норм!!
Если комуто будет интересно, баг был не в коде, а в среде. Дело в том что, в какой-то момент Denwer стал выдавать мне старые сессии. Вопос был решен рестартом Httpd. Я до сих пор не понял как так это все произошло, но все равно сейчас все работает норм!!
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
Рецепт обновлён. Указал местонахождение файлов, добавил несколько подсказок и избавился от использования базового контроллера.
http://yiiframework.ru/doc/cookbook/ru/access.rbac.file
http://yiiframework.ru/doc/cookbook/ru/access.rbac.file
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: RBAC и описание ролей в файле
Рад, что мои идеи тоже вошли в рецепт, я кстати нашел интересную особеность checkAccess:
1)в bizRule нельзя его повторно вызвать.
2)Он не возвращает результат выполнения bizRule.
1)в bizRule нельзя его повторно вызвать.
2)Он не возвращает результат выполнения bizRule.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
А зачем его повторно вызывать в bizRule?
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: RBAC и описание ролей в файле
Ну у меня очень сложная система ролей, чтоб не создавать кучу операций(вложеных друг в друга), решил сделать проще - операции сами проверяют в bizRule для какой роли пользователя и как они работают.
-
- Сообщения: 350
- Зарегистрирован: 2009.09.17, 16:47
- Откуда: Санкт-Петербург
- Контактная информация:
Re: RBAC и описание ролей в файле
Надо еще добавить дамп таблицы user. Так же указать где должен находится файл WebUser.php.
Предупрежден - значит вооружен.
devKP.ru
devKP.ru
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC и описание ролей в файле
Путь к файлу указал. Также добавил модель User.
Нравится Yii? Давайте сделаем его лучше!.