MVC 6 (ASP.NET Core 1.0) работает немного по-другому в способе регистрации фильтров:
Startup.cs - AddMvc с фильтром для RequireHttpsAttribute :
public void ConfigureServices(IServiceCollection services)
{
// TODO: Register other services
services.AddMvc(options =>
{
options.Filters.Add(typeof(RequireHttpsAttribute));
});
}
Объяснение проектных решений:
- Используйте фильтр в Startup.cs для глобальной настройки (так как мы хотим, чтобы это применялось везде). Стартап должен отвечать за регистрацию и настройку всех глобальных правил. Если в вашей компании будет нанят новый разработчик, она ожидает найти глобальные настройки в Startup.cs.
- Использовать логику RequireHttpsAttribute , поскольку она доказана (Microsoft). Никогда не используйте «волшебные» строки, такие как «http://"» и «https://"», если этого можно избежать, повторно используя компонент Microsoft, созданный для обеспечения той же логики.
Если вы используете свой сайт MVC на локальном хосте без SSL:
- http : // localhost: 1337 / (без SSL)
- https : // localhost: 1337 / (SSL)
Подумайте над , как запустить без SSL на локальном хосте, при этом все еще требуя его использования в https .
Примечание:
В качестве альтернативы мы могли бы создать «класс BaseController: Controller» и заставить все наши контроллеры наследовать от «BaseController» (вместо Controller). Тогда нам нужно только установить глобальное место атрибута 1 (и не нужно регистрировать фильтр в Startup.cs).
Некоторые люди предпочитают стиль атрибута.
Пример использования:
[RequireHttpsAttribute]
public class BaseController : Controller
{
// Maybe you have other shared controller logic..
}
public class HomeController : BaseController
{
// Add endpoints (GET / POST) for Home controller
}