Переопределение фильтра глобальных действий - PullRequest
5 голосов
/ 04 июля 2011

На нескольких страницах моего сайта необходимо использовать SSL, поэтому я добавил [RequireHttps] в соответствующие контроллеры. Однако я все еще хочу, чтобы большинство моих страниц всегда использовали не-SSL, поэтому я успешно использовал код, который я нашел на SO , для создания пользовательского [DoNotUseHttps] фильтра.

Чтобы упростить задачу, я бы хотел включить этот фильтр без SSL по умолчанию, поэтому я добавил его в глобальные фильтры, которые установлены в файле Global.asax. Однако теперь я, кажется, создал бесконечный цикл, в котором каждый фильтр перенаправляется на другой.

Что приводит меня к моему вопросу ... могу ли я что-то добавить в свой глобальный фильтр, чтобы определить, был ли [RequireHttps] уже применен к контроллеру?

1 Ответ

5 голосов
/ 05 июля 2011

Конечно, вы можете опросить что угодно о действиях и контроллерах. Для проверки на RequireHttpsAttribute:

public override void OnActionExecuted(ActionExecutedContext filterContext)
{
    base.OnActionExecuted(filterContext);

    bool requireHttps = filterContext.ActionDescriptor.ControllerDescriptor
        .GetCustomAttributes(typeof(RequireHttpsAttribute), true).Length > 0
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...