В настоящее время у меня есть несколько контроллеров, которые я ограничил с помощью декоратора [Authorize]
. Теперь мне нужно сделать это в нескольких разных контроллерах, есть ли центральное место, в которое это можно положить? Однажды в этом месте я могу сказать, какие контроллеры применять это, вместо того, чтобы помещать его в каждый отдельный файл контроллера?применение разрешения от общего места
1
A
ответ
2
Как о чем-то вроде этого:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
string controllerName = actionContext.ControllerContext.ControllerDescriptor.ControllerName;
bool shouldAuthorize = //.. Check if controller needs authorization
if(!shouldAuthorize)
SkipAuthorization(actionContext);
else if(!IsAuthorized(actionContext))
HandleUnauthorizedRequest(actionContext);
}
}
Тогда вы бы применить этот фильтр глобально:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomAuthorizeAttribute());
}
Обратите внимание, что проверка контроллера делается внутри пользовательский атрибут.
0
Вы можете создать базовый контроллер, на который наследуются другие контроллеры. В этом классе примените свой основной атрибут авторизации.
Namespace Controllers
<SecureAuthorizeAttribute>
Public Class SecureController
Inherits Controller
End Class
End Namespace
Тогда в ваших других контроллеров:
Public Class ViewDetailsController
Inherits SecureController
End Class
Это будет применяться <SecureAuthorizeAttribute>
к каждому действию в классах, которые наследуются от SecureController
.
Смежные вопросы
- 1. Применение аспектов в зависимости от рекомендуемого места вызова объекта
- 2. применение разрешения для разных устройств
- 3. Вопросы разрешения общего применения (Alias)
- 4. Tomcat общего места для обычных банок webapplications
- 5. Как предотвратить применение Facebook для получения разрешения?
- 6. Мобильный веб-сайт - Применение хорошего разрешения
- 7. Применение патч от java.net
- 8. Restful Применение от HTML
- 9. CID от поиска, МЕСТА
- 10. UISwipeGestureRecognizer от определенного места
- 11. Расширение от общего супертипа?
- 12. Наследовать от общего хаб
- 13. Раунд от общего запроса
- 14. Расширение от общего параметра
- 15. Выделяют места в зависимости от расстояния
- 16. Разрешения Unix от Windows
- 17. Разрешения Marshmallow от Android?
- 18. Отказ от разрешения Android
- 19. Независимость от разрешения XNA
- 20. неявного разрешения от признака
- 21. Запретить применение winform от замораживания
- 22. Получить имя места от reverseGeocodeLocation
- 23. как расколоться от второго места?
- 24. Управление Togglz от одного места
- 25. Избавление от места после запятой
- 26. Получить спиральный индекс от места
- 27. dxChart высота от места службы
- 28. Ошибка разрешения R6016 - Недостаточно места для данных потока
- 29. Какого разрешения причины Места разрешения быть видимым в настройках на Android 6
- 30. Android: применение полей с использованием общего стиля не работает
Вы можете создать настраиваемый фильтр, но который применил бы его глобально. – singsuyash
вы можете создать baseController, который имеет атрибут authorize. Поскольку атрибуты также наследуются. Даже вы можете создать иерархию согласно авторизации роли. См. Ответ для получения дополнительной информации. Http://stackoverflow.com/a/32803405/4293929 – MstfAsan