Rbac разрешения для пользователей.

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Закрыто
alex2017
Сообщения: 8
Зарегистрирован: 2017.08.08, 21:39

Rbac разрешения для пользователей.

Сообщение alex2017 » 2017.08.08, 22:20

Привет! Возник очень странный вопрос.

Есть ли возможность реализовать при помощи RBAC передачу разрешения именно пользователю а не роли?

Если нет, то лучше тогда воспользоваться ABAC и писать все ручками?

Спасибо

Maksat1991
Сообщения: 57
Зарегистрирован: 2016.10.16, 00:15

Re: Rbac разрешения для пользователей.

Сообщение Maksat1991 » 2017.08.09, 09:32

Можно назначить право (permission) напрямую юзеру.

А можно между правом и юзером поставить роль.
Тогда у роли будут права.
А у юзера будут эти роли.
Получится одно и то же, как если бы юзеру Вы дали все права, которые есть у этих ролей. Но через роли удобнее

alex2017
Сообщения: 8
Зарегистрирован: 2017.08.08, 21:39

Re: Rbac разрешения для пользователей.

Сообщение alex2017 » 2017.08.09, 21:07

Maksat1991 писал(а):
2017.08.09, 09:32
Можно назначить право (permission) напрямую юзеру.

А можно между правом и юзером поставить роль.
Тогда у роли будут права.
А у юзера будут эти роли.
Получится одно и то же, как если бы юзеру Вы дали все права, которые есть у этих ролей. Но через роли удобнее
С кайфом.

А есть какой нибудь пример? хоть где нибудь? а то я чет не найду. Спасибо

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Rbac разрешения для пользователей.

Сообщение zelenin » 2017.08.09, 21:34

alex2017 писал(а):
2017.08.09, 21:07
А есть какой нибудь пример? хоть где нибудь? а то я чет не найду. Спасибо
в официальной доке, в разделе, который называется Assigning roles to users (то есть прямо как ваш вопрос)
https://github.com/yiisoft/yii2/blob/ma ... s-to-users

или в любом примере кода оттуда же

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

  // Assign roles to users. 1 and 2 are IDs returned by IdentityInterface::getId()
        // usually implemented in your User model.
        $auth->assign($author, 2);
        $auth->assign($admin, 1);

alex2017
Сообщения: 8
Зарегистрирован: 2017.08.08, 21:39

Re: Rbac разрешения для пользователей.

Сообщение alex2017 » 2017.08.10, 10:20

zelenin писал(а):
2017.08.09, 21:34
в официальной доке, в разделе, который называется Assigning roles to users (то есть прямо как ваш вопрос)
https://github.com/yiisoft/yii2/blob/ma ... s-to-users
как назначить роль->пользователю это я знаю. Спасибо. Но! как назначить право (permission) именно пользователю. Конкретному не всей роли, а одному пользователю. Есть какие нибудь примеры?
Спасибо

Аватара пользователя
maleks
Сообщения: 1722
Зарегистрирован: 2012.12.26, 12:56

Re: Rbac разрешения для пользователей.

Сообщение maleks » 2017.08.10, 10:34

alex2017 писал(а):
2017.08.10, 10:20
как назначить роль->пользователю это я знаю. Спасибо. Но! как назначить право (permission) именно пользователю. Конкретному не всей роли, а одному пользователю. Есть какие нибудь примеры?
Спасибо
Архитектура вроде не запрещает передать вместо имени роли имя разрешения:

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

$auth->assign('some_permission', 1);

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Rbac разрешения для пользователей.

Сообщение zelenin » 2017.08.10, 10:39

alex2017 писал(а):
2017.08.10, 10:20
zelenin писал(а):
2017.08.09, 21:34
в официальной доке, в разделе, который называется Assigning roles to users (то есть прямо как ваш вопрос)
https://github.com/yiisoft/yii2/blob/ma ... s-to-users
как назначить роль->пользователю это я знаю. Спасибо. Но! как назначить право (permission) именно пользователю. Конкретному не всей роли, а одному пользователю. Есть какие нибудь примеры?
Спасибо
роль и разрешение отличаются только семантически. Для реализации rbac в yii это одно и то же.

alex2017
Сообщения: 8
Зарегистрирован: 2017.08.08, 21:39

Re: Rbac разрешения для пользователей.

Сообщение alex2017 » 2017.08.10, 10:52

maleks писал(а):
2017.08.10, 10:34
Архитектура вроде не запрещает передать вместо имени роли имя разрешения:

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

$auth->assign('some_permission', 1);
Каеф!
Спасибо большое)))

Закрыто