2014-06-19 7 views
10

Ich habe eine MVC 5 App und ich habe das SSL-Zertifikat installiert und ich bin jetzt mit https verbinden, aber in meinem Code musste ich das '[requirehttps]' Attribut setzen so auf dem Homecontroller wie:Wie aktiviere ich ssl für alle Controller in mvc-Anwendung

[RequireHttps] 
public class HomeController : Controller 
{} 

gibt es nicht eine Möglichkeit, es für die gesamte Anwendung zu setzen, so habe ich das nicht für jeden einzelnen Controller ich in der App zu tun?

Antwort

15

die RegisterGlobalFilters Methode in Ihrem FiltersConfig verwenden.

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

Wie man das benutzt? –

2

Das Attribut [RequireHttps] wird vererbt, sodass Sie einen Basiscontroller erstellen, das Attribut darauf anwenden und dann alle Ihre Controller von dieser Basis ableiten können.

[RequireHttps] 
public abstract class BaseController : Controller 
{} 

public class HomeController : BaseController 
{} 

public class FooController : BaseController 
{} 
+0

das wäre noch mehr Arbeit als das Hinzufügen der Attribute zu jedem Controller, ich suchte nach weniger Arbeit? Vielleicht eine allgemeine Attributeinstellung oder etwas? – user1186050

+0

Nicht viel Arbeit. Ein simples Finden und Ersetzen von "Controller: Controller" und Ersetzen durch "Controller: BaseController" über das Projekt im Visual Studio sollte den Zweck erfüllen. –

+1

ok gut, es wäre fast die gleiche Menge an Arbeit wie das Erstellen des Attributs über jedem Controller, dennoch suchte ich nach einer anderen Lösung. Wenn es einen gibt ... – user1186050