2

Возможность добавления, обновления и удаления различных объектов в моем приложении часто определяется отношениями, определенными между различными вовлеченными пользователями. Вот пример:Как обрабатывать сложную авторизацию в приложении ASP.NET MVC 4/EF?

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

Каков наилучший подход к реализации таких сложных и расширенных правил, которые касаются взаимоотношений пользователей и состояния сущностей (новых, существующих), а также других вещей, например, определенных пользователем статус, связанный с объектом?

Благодаря

ответ

0

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

Это была сложная задача, но нам нужно было поддерживать базу данных о персонале структуры отчетности. Как только мы это сделали, мы создали пользовательские функции (также можно было выполнить как хранимые procs, но пользовательские функции хорошо работали в нашем LINQ to SQL backend), что позволило нам проверить, контролирует ли пользователь x пользователь y.

Итак, в вашем примере, если вы знаете, кому принадлежит эта задача, и имеете доступ к методу, который может быть использован для определения того, будет ли владелец задачи отчитываться перед пользователем, зарегистрированным в настоящий момент, вы должны быть способны чтобы легко включить/отключить кнопку блокировки на странице.

Новизна заключается в создании этой структуры отчетности БД, и поддержании ее в актуальном состоянии!

3

Каков наилучший подход к реализации такого рода сложных и передовых правил, которые касаются взаимоотношений пользователей и состояния субъектов (нового, существующий), а также других вещей, как, может быть, гается определенный статус, связанный с объектом?

Вы хотите использовать стандарт авторизации, а именно XACML, расширяемый язык разметки контроля доступа. XACML является:

  • стандарт, разработанный OASIS, так же, как SAML является
  • стандарт, который фокусируется на мелкозернистый контроля доступа: контроль доступа, который принимает во внимание информацию пользователя учетной записи, информацию о ресурсах, состоянии и контекстную информацию
  • стандарт, реализующий модель управления доступом на основе атрибутов (ABAC): все данные пользователя, данные о ресурсах и состояние можно рассматривать как атрибуты
  • стандарт, который использует политики и правила для структурирования атрибутов и предоставления/запретить доступ: XACML основан на политике
  • стандарт, который может быть применен на нескольких уровнях, например. на уровне уровня представления, уровне данных, бизнес-уровне приложения MVC
  • стандарт, который может применяться к нескольким технологиям и языкам, например. C# (MVC4 и более), Java, Python ...

С XACML, вы можете легко реализовать отношения т.д .: работник может одобрить сделку, если и только если сумма сделки < работник предел утверждения и сделка не закрыта.

Куда пойти отсюда?

  • Просмотрите страницу NIST на ABAC.
  • Заканчивать OASIS XACML в page и спецификации
  • Заканчивать существующие реализации (с открытым исходным кодом и поставщиков, таких, как тот, в которой я работаю, Axiomatics.)
Смежные вопросы