Я разрабатываю приложение, похожее на CMS, с использованием MVC 3 (RC2), и сейчас я нахожусь на распутье. Я не могу убедить себя, подходит ли мой предложенный подход или нет. Я предполагаю, что это потому, что я знаю, что пытаюсь срезать некоторые углы, которые впоследствии дорого мне обойдутся.
Перейду сразу к описанию моей проблемы:
1) У меня есть ресурс (назовем его А), который нужно сделать редактируемым.
2) У меня реализована пользовательская система разрешений, которая имеет 2 (из многих) разрешений:
- Может редактировать собственный ресурс
- Может редактировать другой ресурс
3) Создатель ресурса А может редактировать его, если у него есть разрешение «Может редактировать собственный ресурс».
4) Отдельный пользователь может редактировать только A, если у него есть разрешение «Может редактировать другой ресурс».
Теперь, когда требования описаны, позвольте мне рассказать вам о моем подходе:
1) У меня есть контроллер под названием ResourceController.
2) У меня есть действие под названием "Редактировать"
3) У действия есть атрибут: [CustomerAuthorize(Perm.CanEditOwnResource, Perm.CanEditOtherResource, Any = true)]
4) У меня есть класс обслуживания, который занимается проверкой домена.
Таким образом, пользователь получает вызов метода действия, если у него есть разрешение «Может редактировать собственный ресурс» или «Может редактировать другой ресурс».
Как мне решить (и где это решение должно быть принято) о том, имеет ли пользователь право доступа или нет (в зависимости от того, владеет ли он ресурсом?) Должен ли он быть в действии контроллера, в классе обслуживания ресурса, в отдельном класс обслуживания?
Жду разных мнений...