Как расширить / спроектировать ASP.Атрибут авторизации .NET MVC 3 для обработки этого сценария

Я пытался придумать этот ответ через и не могу найти хорошего решения, как правильно это сделать.

Я прочитал эти статьи :
http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/
http://geekswithblogs.net/brians/archive/2010/07/08/implementing-a-custom-asp.net-mvc-authorization-filter.aspx
настраиваемая авторизация ASP.NET MVC
http: / /davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute.aspx
Настраиваемый атрибут авторизации, дополнительный параметр?

Думаете, что последний из них близок.


Сценарий:

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

Итак, в контроллере, как я могу сказать, что пользователь имеет доступ к действию, если я не знаю, какие роли создал администратор пользователя?

Итак, по логике ... скажем, у меня есть задача Контроллер с помощью «Создать», «Подробности». В Задаче есть отдел «Одежда».

  • Задача:
    - TaskID
    - TaskTitle
    - TaskDepartmentID

  • - Пользователь:
    {{ 1}} - Имя пользователя
    - Роли
    - Отделы

    Я бы как-то связал действие «Создать» с возможностью «Создать задачу»
    { {1}} Я бы как-то связал действие "Подробности" с возможностью "Просмотр сведений о задаче"

. Администратор добавил бы новую роль под названием "Пользователи задач" и сказал бы, что эта роль может "Создавать задачи"
{{1 }} Администратор также разрешит этой роли «Просмотр сведений о задаче»
Администратор включит «Безопасность на уровне отдела»


Создание:
Когда на контроллере вызывается создание задачи. Мне нужно убедиться, что пользователь находится в роли, которая позволяет «Создать задачу». Поэтому по умолчанию я не могу отправить разрешенные «роли» в атрибут авторизации, потому что я их не знаю. Мне как-то нужно отправить все роли, которые есть у пользователя, и посмотреть, есть ли у роли доступ к «Создание задач»

Просмотр с помощью службы безопасности отдела:
Когда другой пользователь переходит для просмотра этой задачи, он может иметь доступ к «Просмотр подробностей задачи» (что я могу понять, но решаю первую проблему). Однако, поскольку Задача предназначена для другого отдела, отличного от того, в котором они находятся, мне нужно запретить доступ. Пользователь может только «Просмотреть подробности задачи», если задача является частью одного из отделов, в котором находится пользователь.

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

Идентификатор отдела не обязательно кэшировать, так что, возможно, я смогу сделать это на уровне контроллера.

10
задан Community 23 May 2017 в 10:24
поделиться