Авторизация RBAC

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Авторизация RBAC

Сообщение maleks »

В доках читаю после "Приведём пример построения иерархии авторизации с использованием данного API:" .
Идет код(***) с эл-тами авторизации. Не написано куда этот код вставлять. Инклудить этот код в index.php перед CApplication::run() ?

Для CPhpAuthManager смотрю есть возможность хранить эти настройки в файле X. Про формат этого файла ни слова. Но есть код его формирующий. Так может этот код (***) надо где то отдельно держать и потом когда что то в нем изменилось - пересохранять в файле X. И это вручную что ли делать или контроллер для этого заводить(и в контроллере этот код держать)?

Спасибо.
Yii2 universal module sceleton - for basic and advanced templates
Vladimir P
Сообщения: 60
Зарегистрирован: 2012.08.15, 15:41

Re: Авторизация RBAC

Сообщение Vladimir P »

Не написано куда этот код вставлять.
Это уж куда вам удобней. Если у вас статичный набор юзеров, ролей, операций, то храните в файлах, вроде был про это отдельный рецепт.
Если хотите иметь возможность управлять через базу данных - пишите соответствующий интерфейс. Можете скачать и посмотреть как устроен, например, Srbac:
http://www.yiiframework.com/extension/srbac
destin9000
Сообщения: 225
Зарегистрирован: 2013.03.10, 12:47

Re: Авторизация RBAC

Сообщение destin9000 »

Vladimir P писал(а):
Не написано куда этот код вставлять.
Это уж куда вам удобней. Если у вас статичный набор юзеров, ролей, операций, то храните в файлах, вроде был про это отдельный рецепт.
Если хотите иметь возможность управлять через базу данных - пишите соответствующий интерфейс. Можете скачать и посмотреть как устроен, например, Srbac:
http://www.yiiframework.com/extension/srbac
Юзеры хранятся в базе, 4 роли:гость, юзер, администратор, модератор.
Тогда как?И как дать понять фреймворку что надо загрузить этот файл?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Авторизация RBAC

Сообщение maleks »

Это уж куда вам удобней. Если у вас статичный набор юзеров
Пользователи - как их набор может быть статическим?

Сама последовательность работы не понятна.
Yii2 universal module sceleton - for basic and advanced templates
Vladimir P
Сообщения: 60
Зарегистрирован: 2012.08.15, 15:41

Re: Авторизация RBAC

Сообщение Vladimir P »

Вот же рецепт, подробный вроде:
http://www.yiiframework.ru/doc/cookbook ... .rbac.file
Если в нем что-то непонятно, то на форуме есть тема с обсуждением рецепта.
По полной программе, с базой и интерфейсом, это сделано в экстеншене Srbac, откройте, посмотрите.
Bloom
Сообщения: 313
Зарегистрирован: 2013.02.25, 12:57

Re: Авторизация RBAC

Сообщение Bloom »

Только сейчас с этой темой разбирался. Читай вот этот рецепт http://yiiframework.ru/doc/cookbook/ru/access.rbac.file
Когда дойдешь до строки:
Теперь можно пользоваться:

if(Yii::app()->user->checkAccess('administrator')){
echo "hello, I'm administrator";
}
тут в меня был ступор.. ведь есть public function accessRules().. как при помощи неё использовать полученные роли?
А вот так:

Код: Выделить всё

public function accessRules()
    {
        return array(
            array('allow',  // allow all users to perform 'index' and 'view' actions
                'actions'=>array('index','view'),
                'roles'=>array('guest'),
            ),
            array('allow', // allow authenticated user to perform 'create' and 'update' actions
                'actions'=>array('create','update'),
                'roles'=>array('2'),
            ),
            array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions'=>array('admin','delete'),
                'roles'=>array('0'),
            ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }
т.е. вместо стандартного 'users'=>array('...'), мы передаем 'roles'=>array('...'), в массив которого мы передаем название роли, которые прописали в auth.php
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Авторизация RBAC

Сообщение maleks »

Теперь понятней.

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

Наверное лучше всю эту логику по ролям хранить отдельно где то в коде, и она будет первичной. И при изменениях просто удалять файл protected/config/auth.php и пересоздавать его заново с изменившейся логикой, а привязку ролей к пользователю уже делать как в примере "на лету".
Yii2 universal module sceleton - for basic and advanced templates
Ответить