Защита веб-приложения на уровне доступа к данным. - PullRequest
0 голосов
/ 04 мая 2009

Пожалуйста, рассмотрите следующую настройку:

  1. Многопользовательское веб-приложение.
  2. Арендаторы создают учетные записи компаний, а учетные записи компаний имеют учетные записи пользователей.
  3. У пользователей есть роли, есть специальная роль «Владелец» (пользователь, создавший учетную запись компании).

Я хотел бы, чтобы пользователи могли редактировать другие учетные записи пользователей (некоторые задачи администратора), но должны быть выполнены два условия:

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

Приложение использует архитектуру MVC. В настоящее время я проверяю эти два условия в веб-слое, и он работает для меня, но у меня есть некоторые опасения. Если я использую какой-либо API или какой-либо другой тип потребителя данных, я могу «забыть» повторно сообщить эти условия. Кроме того, в приложении будут и другие объекты со схожими требованиями к функциональности, которые будут иметь схожие ограничения, поэтому мне лучше придумать какой-нибудь шаблон, который наложит ограничения на уровень доступа к данным.

Кто-нибудь может порекомендовать какой-нибудь подход, который стоит изучить?

Спасибо!

1 Ответ

1 голос
/ 04 мая 2009

Я считаю, что аспекты или перехватчики должны быть в состоянии помочь вам. Если вы работаете с объектами, вы сможете перехватывать запросы, содержащие ваши бизнес-данные, и проверять, разрешено ли вашему пользователю работать с ними. Затем перехватчик может остановить или продолжить выполнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...