2014-06-19 12 views
10

Ho un'app MVC 5 e ho installato il certificato ssl e ora mi sto collegando con https, ma nel mio codice ho dovuto impostare l'attributo '[requirehttps]' sulla HomeController in questo modo:Come abilitare ssl per tutti i controller nell'applicazione mvc

[RequireHttps] 
public class HomeController : Controller 
{} 

non c'è un modo per impostare per l'intera applicazione in modo da non devo fare questo per ciascuno e per ogni controller che ho in app?

risposta

15

utilizzare il metodo RegisterGlobalFilters nel vostro FiltersConfig.

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

Come usare questo? –

2

L'attributo [RequireHttps] è ereditato, quindi è possibile creare un controller di base, applicare l'attributo a quello e quindi derivare tutti i controller da quella base.

[RequireHttps] 
public abstract class BaseController : Controller 
{} 

public class HomeController : BaseController 
{} 

public class FooController : BaseController 
{} 
+0

che sarebbe ancora più lavoro, quindi aggiungendo l'attributo a ciascun controller, stavo cercando meno lavoro? Forse qualche impostazione generale degli attributi o qualcosa del genere? – user1186050

+0

Non molto lavoro. Un semplice find-and-replace su "Controller: Controller", e sostituire con "Controller: BaseController", attraverso il progetto in Visual Studio dovrebbe fare il trucco. –

+1

ok bene sarebbe quasi la stessa quantità di lavoro che creare l'attributo sopra ogni controller, tuttavia stavo cercando una soluzione diversa. Se ce n'è uno ... – user1186050

Problemi correlati