Авторизация для просмотра / страницы и авторизация для конкретного объекта - это на самом деле две разные концепции. Наилучшим подходом является проблема использования атрибута Authorize в сочетании с системой ролей ASP.NET для предоставления или запрета доступа к данной странице. После того как вы убедились, что у пользователя есть доступ к странице, вы можете проверить, имеет ли он разрешение, которое он запрашивает, для объекта, для которого он запрашивает его. Я использую этот подход в своем приложении, и он прекрасно работает. Сначала, используя фильтр Authorize, он значительно повышает производительность, поскольку проверка прав доступа к объекту является гораздо более тяжелой операцией.
Кроме того, я использую систему правил домашнего приготовления, чтобы фактически установить и определить, имеет ли пользователь доступ к объекту. Например, в моей системе администраторы имеют полный доступ к каждому объекту. (Это правило.) Пользователь, который создает объекты, имеет полный доступ к объекту (также указанному правилом). Кроме того, менеджер пользователя имеет полный доступ ко всем вещам, к которым имеют доступ его сотрудники (опять же, определяется правилом). Мое приложение затем оценивает объект, чтобы определить, применимо ли какое-либо из этих правил - сначала начнем с того, чтобы сначала не выполнить сложные правила, а затем перейти на более сложные правила в прошлом. Если какое-либо правило является положительным, я прекращаю оценку правила и выхожу из функции.