Статьи из рубрики access-control
Рефакторинг кода авторизации
Использование аккаунта социальной сети для авторизации
Авторизация с помощью социальной сети не должна зависеть от типа аккаунта. В предыдущем посте используется код, где в конструкторе классa common/components/SocialContact.php
выполняется оператор switch
. При добавлении обработчика для новой социальной сети, придется дописывать код, при этом меняя класс.
Перепишем конструктор так, чтобы класс не нужно было менять и он не зависел от типов социальных сетей.
Как подключить авторизацию через аккаунт
OAuth2 авторизация с использованием аккаунта
Допустим, что вы уже зарегистрированы в известной социальной сети. То есть вы уже сообщили о себе, все, что считали нужным. Очевидно вам не хочется проходить процедуру еще раз на другом ресурсе.
Авторизация с помощью социальной сети позволяет избежать повторного заполнения формы регистрации. При этом защищенность вашего аккаунта в социальной сети никак не страдает. Вы просто подтверждаете, что вы это вы. Как подключить эту услугу к проекту используя расширение yiisoft/yii2-authclient?
Как определить правило для RBAC
Выполнять действие или нет
В предыдущей статье были определены две роли - Админ и Автор, как в обычном блоге. А обычно блог используется при создании любого сайта. Для ролей Админ и Автор были определены разрешения.
Если вы Админ, то у вас есть общее разрешение create
. Оно дает право добавлять данные к любым моделям. Если вы Автор, то такое разрешение давать не стоит. Автор не может, например, добавить новую рубрику.
Определение разрешений на доступ и ролей для пользователей
Задание доступа только к определенным действиям
Разработка бекенда сайта часто подразумевает ограничение прав при редактировании контента.
Ролевая модель имеет иерархию. Сначала прав не много, потом чуть больше, наконец доступно все. Права (или разрешения) - это константы, которые связаны с конкретной ролью. Если за ролью закреплено разрешение, то действие может быть выполнено.
Как подключить RBAC
Подключение ролевого доступа
В большом количестве задач необходимо в backend-части приложения разрешать одним группам пользователей выполнять только определенные действия. Другим может быть разрешено чуть больше. И так далее, до админа.
Именно распределение прав для групп пользователей и будет рассмотрено в паре-тройке статей. В качестве примера будет использоваться всего две роли.
Поиск
Метки
- 1. Как подключить RBAC
- 2. Определение разрешений на доступ и ролей для пользователей
- 3. Как определить правило для RBAC
В большом количестве задач необходимо в backend-части приложения разрешать одним группам пользователей выполнять только определенные действия. Другим может быть разрешено чуть больше. И так далее, до админа.
Именно распределение прав для групп пользователей и будет рассмотрено в паре-тройке статей. В качестве примера будет использоваться всего две роли.
Речь о настоящем блоге. Поэтому роли - это Автор и Админ. Админ может все. Автор может:
- разместить статью,
- просмотреть список собственных статей,
- посмотреть и отредактировать свою статью,
- просмотреть список комментариев к своим статьям,
- ответить на комментарий к своей статье,
- редактировать собственный комментарий,
- редактировать свой профайл.
Data Structure
Пользователь (User
), кроме прочего, имеет поле group_id
с двумя возможными значениями: 1- Админ, 2 - Автор.
Еще у нас есть Статьи (Post
) и Комментарии (Comment
). Статья имеет поле author_id
, для связи с создавшим ее Автором. Комментарии оставляют не зарегистрированные посетители сайта, заполняя при этом Имя
и Email
.
Settings
Если у вас basic
шаблон Yii2
, то в файле /commands/RbacController.php
должны определяться роли и разрешения на доступ, а в каталоге /rbac
должны располагаться классы правил доступа и туда же записываются сформированные файлы правил.
Для шаблона basic
подключаем менеджер прав доступа в файле /config/web.php
.
$config = [ 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\PhpManager', 'defaultRoles' => ['author', 'admin'], ],
Для advanced
шаблона структура каталогов немного другая: /console/controllers/RbacController.php
и /console/rbac
.
А вот подключение отличается существенно. Во-первых, нужно подключить менеджер для консоли в файле /console/config/main.php
, чтобы сформировать правила.
$config = [ 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\PhpManager', 'defaultRoles' => ['author', 'admin'], ],
Во-вторых, в папке, для которой нужен ролевой доступ. В нашем случае для /backend/config/main.php
.
$config = [ 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\PhpManager', 'defaultRoles' => ['author', 'admin'], 'itemFile' => __DIR__ . '/../../console/rbac/items.php', 'ruleFile' => __DIR__ . '/../../console/rbac/rules.php', ],
Если не указать пути к файлам itemFile
и ruleFile
, то никакой ошибки выдаваться не будет. Просто менеджер не будет работать.
Заключение
Теперь можно приступать к созданию разрешений, ролей, описанию и подключению правил. Но об этом в следующей статье.
Оставьте комментарий
Только зарегистрированные пользователи могут оставлять комментарии. Пожалуйста войдите или пройдите регистрацию.
Можно авторизоваться, используя социальную сеть-
-
-