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

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

Я прочитал над этими статьями:
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
Custom Authorize Attribute дополнительный параметр?

Думая, может быть, последний близок.


Сценарий:

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

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

Так что в логике ... допустим, у меня есть контроллер задач с «Создать», «Детали». Задание имеет отдел «Одежда».

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

- Пользователь:
- Имя пользователя
- роли
- Отделы

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

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


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

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

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос