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