Роль для незалогиненных пользователей

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
vladimir.a
Сообщения: 3
Зарегистрирован: 2017.07.16, 11:39

Роль для незалогиненных пользователей

Сообщение vladimir.a » 2017.07.16, 12:11

Использую RBAC на основе DBManager. Мне нужно для незалогиненных пользователей установить роль, которая хранится со всеми разрешениями в базе данных. Читал документацию про defaul roles, но как я понял, это для залогиненных пользователей. Каким образом можно назначить роль для незалогинненых пользователей?

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

Re: Роль для незалогиненных пользователей

Сообщение maleks » 2017.07.17, 06:46

делается роль с правилом проверяющим что незалогинен и выставляется в default roles

Аватара пользователя
girmate
Сообщения: 1508
Зарегистрирован: 2015.10.27, 12:52

Re: Роль для незалогиненных пользователей

Сообщение girmate » 2017.07.17, 13:11

Вот до сих пор не могу понять в каком случае нужна эта роль "по умолчанию" для не залогиненых пользователей? Ведь такие пользователи - гости. А гостям можно все, что не запрещено. А не запрещено все, где нет проверки ->can('success') либо такая проверка успешно пройдена. Кто бы разъяснил для чего нужна роль по умолчанию.
Осторожно! Вы общаетесь с новичком ;)

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

Re: Роль для незалогиненных пользователей

Сообщение maleks » 2017.07.17, 13:16

Эта роль нужна чтобы работать с ней из админки, присваивать ей разрешения.

Например можно этой роли присвоить разрешение "Оставлять комментарии" в блоге.
Также само достаточно это разрешение у роли снять и гости не смогут комментить.

vladimir.a
Сообщения: 3
Зарегистрирован: 2017.07.16, 11:39

Re: Роль для незалогиненных пользователей

Сообщение vladimir.a » 2017.07.17, 13:33

girmate писал(а):
2017.07.17, 13:11
Вот до сих пор не могу понять в каком случае нужна эта роль "по умолчанию" для не залогиненых пользователей? Ведь такие пользователи - гости. А гостям можно все, что не запрещено. А не запрещено все, где нет проверки ->can('success') либо такая проверка успешно пройдена. Кто бы разъяснил для чего нужна роль по умолчанию.
Я делаю от обратного: "запрещено все что явно не разрешено". Соответственно нужно присвоить роль гостям(обычным незалогиненым пользователям) с доступом к определенным модулям/контроллерам/действиям, гибко настроить доступ через DBManager, а не в каждом действии писать ->can('success'). Я делаю RBAC похожий на вот это расширение: https://github.com/developeruz/yii2-db-rbac, но там есть свои минусы... Есть вариант для пользователей разрешить прописав жестко в коде 'rules' => ' ', но опять идет привязка к коду. Мне же нужно все сделать через БД.

vladimir.a
Сообщения: 3
Зарегистрирован: 2017.07.16, 11:39

Re: Роль для незалогиненных пользователей

Сообщение vladimir.a » 2017.07.17, 13:43

maleks писал(а):
2017.07.17, 06:46
делается роль с правилом проверяющим что незалогинен и выставляется в default roles
Можно поподробнее?
Насколько я понял... Мне нужно наследоваться от класса Rule и переопределить метод execute() на свой метод, который будет возвращать роль для незалогининного пользователя? Или я неверно понял?

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

Re: Роль для незалогиненных пользователей

Сообщение maleks » 2017.07.17, 14:33

Ну в доках же написано как свои правила делать:
http://www.yiiframework.com/doc-2.0/gui ... sing-rules

А внутри проверяете чтобы текущий пользователь был гостем

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость