Необходимо дать пользователям разные права на сайте. Если использовать инструменты фреймворка, то при миграции на другой фреймворк, управление правами и сами права нужно будет делать заново.
Наверное хотелось бы иметь некий Proxy сервис, через который бы шли все вызовы к application layer и который бы внутри проверял можно пользователю вызвать метод application сервиса или нельзя. Но я не понимаю, в каком слое такой Proxy сервис может существовать и вообще верное ли это направление? Presentation ? Application? Если application, то не странно ли, что один application сервис решает как вызывать другие сервисы того же слоя? Помогите разобраться, как правильно сделать контроль доступа ?
Контроль доступа в DDD ?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Контроль доступа в DDD ?
Если планируется миграция — завернуть в какой-либо класс необходимо, да. Я заворачиваю и просто для удобства.
https://github.com/samdark/yiipowered/b ... ssions.php
https://github.com/samdark/yiipowered/b ... ssions.php
Нравится Yii? Давайте сделаем его лучше!.
Re: Контроль доступа в DDD ?
В примере статика. А в заголовке топика есть три волшебных буквы) Идея верна, но надо делать без статики, в виде stateless-сераиса. Иначе инжектить не сможете.samdark писал(а): ↑2017.03.31, 11:37 Если планируется миграция — завернуть в какой-либо класс необходимо, да. Я заворачиваю и просто для удобства.
https://github.com/samdark/yiipowered/b ... ssions.php
Re: Контроль доступа в DDD ?
sda писал(а): ↑2017.03.31, 06:02 Необходимо дать пользователям разные права на сайте. Если использовать инструменты фреймворка, то при миграции на другой фреймворк, управление правами и сами права нужно будет делать заново.
Наверное хотелось бы иметь некий Proxy сервис, через который бы шли все вызовы к application layer и который бы внутри проверял можно пользователю вызвать метод application сервиса или нельзя. Но я не понимаю, в каком слое такой Proxy сервис может существовать и вообще верное ли это направление? Presentation ? Application? Если application, то не странно ли, что один application сервис решает как вызывать другие сервисы того же слоя? Помогите разобраться, как правильно сделать контроль доступа ?
Доменный сервис у вас будет. Какой-нибудь AceessManager. В домене его объявите интерфейсом, в инфраструктуре реализация поверх yii-rbac.
Re: Контроль доступа в DDD ?
Меня еще угнетает необходимость писать отдельные пермишены под каждый метод и добавлять их в базу данных. Потом еще не забывать удалять их из базы, если они больше не актуальны.
Вообще я немного подумал и для фронтенда контроль доступа мне вроде как не нужен. Нужен для админ. панели. Но для неё вроде достаточно обычного CRUD. Что-то вроде создания форм по данным из базы и раздача прав на чтение/создание/изменение/удаление. Django говорят это умеет автоматически делать без ручного вмешательства, но к сожалению не знаком с python, чтобы посмотреть исходники и понять, как там это работает.
Вообще я немного подумал и для фронтенда контроль доступа мне вроде как не нужен. Нужен для админ. панели. Но для неё вроде достаточно обычного CRUD. Что-то вроде создания форм по данным из базы и раздача прав на чтение/создание/изменение/удаление. Django говорят это умеет автоматически делать без ручного вмешательства, но к сожалению не знаком с python, чтобы посмотреть исходники и понять, как там это работает.