2014-06-19 1 views
10

У меня есть приложение MVC 5, и я установил сертификат ssl, и теперь я подключаюсь к https, но в моем коде мне пришлось установить атрибут '[requirehttps]' на HomeController как так:Как включить ssl для всех контроллеров в приложении mvc

[RequireHttps] 
public class HomeController : Controller 
{} 

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

ответ

15

Используйте метод RegisterGlobalFilters в вашем FiltersConfig.

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     filters.Add(new RequireHttpsAttribute()); 
    } 
} 
+0

Как это использовать? –

2

Атрибут [RequireHttps] наследуется, поэтому вы можете создать базовый контроллер, применить к нему атрибут и затем вывести все ваши контроллеры с этой базы.

[RequireHttps] 
public abstract class BaseController : Controller 
{} 

public class HomeController : BaseController 
{} 

public class FooController : BaseController 
{} 
+0

Это будет еще больше работы, а затем добавление атрибута для каждого контроллера, я искал меньше работы? Может быть, какой-то общий атрибут или что-то еще? – user1186050

+0

Не много работы. Простая находка и замена на «Контроллере: Контроллер» и замена на «Контроллер: BaseController» по проекту в визуальной студии должны сделать трюк. –

+1

хорошо, это почти то же самое количество работы, что и создание атрибута над каждым контроллером, тем не менее я искал другое решение. Если есть один ... – user1186050