How do I enable ssl for all controllers in mvc app

2020-06-09 08:07发布

问题:

I have a MVC 5 app and I installed the ssl certificate and I'm now connecting with https, but in my code I had to set the '[requirehttps]' attribute on the homecontroller like so:

[RequireHttps]
public class HomeController : Controller
{}

Isn't there a way to set it for the whole application so I don't have to do this for each and every controller I have in the app?

回答1:

Use the RegisterGlobalFilters method in your FiltersConfig.

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


回答2:

The [RequireHttps] attribute is inherited, so you could create a base controller, apply the attribute to that, and then derive all your controllers from that base.

[RequireHttps]
public abstract class BaseController : Controller
{}

public class HomeController : BaseController
{}

public class FooController : BaseController
{}