.NET настраиваемый атрибут авторизации (mvc) - PullRequest
2 голосов
/ 17 декабря 2010

В некоторых контроллерах у меня есть методы CRUD.Для доступа к этим методам пользователь должен войти в систему. Именно поэтому я использовал атрибут [Authorize] для этого контроллера.Теперь мне нужен дополнительный атрибут, который бы проверял, принадлежит ли ему элемент, который пользователь хочет просмотреть / удалить / обновить.

Возможно ли и рекомендуется ли это делать с атрибутом, или вы предлагаете использовать методы проверки внутри каждого метода?Если вы предлагаете использовать атрибут, не могли бы вы предоставить мне несколько ссылок / инструкций?

РЕДАКТИРОВАТЬ:
Конечно, если атрибут возвращает false, я не хочу перенаправлять пользователя на страницу входа, но показываю ему ошибкусообщение ...

Ответы [ 3 ]

4 голосов
/ 17 декабря 2010

Это можно сделать с помощью пользовательского атрибута Authorize, но гораздо понятнее поместить логику в методы контроллера.

2 голосов
/ 17 декабря 2010

Атрибут связан с вызываемым действием (метод класса контроллера).Исходя из этого, любой атрибут, относящийся к владению пользователя объектом, которым манипулируют (из вашей модели), должен действительно быть в сущности / классе, которыми пользователь пытается манипулировать.Вероятно, вам будет проще проверять пользователя в методе Model, чем использовать атрибут для достижения этого.

1 голос
/ 17 декабря 2010

На мой взгляд, это возможно, просто Google для "Custom Authorize Attribute".

Но, возможно, лучше запросить в вашей базе данных что-то вроде этого:

ContextOrSession.Query<Something>.Where(Something.Groups.Intersect(User.Groups).Count>0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...