Это может быть сделано путем написания простого ActionFilter
, который проверяет запрос и отвечает, когда схема не установлена на ssl. Очень минимальная реализация может выглядеть примерно так:
public class RequireHttpsAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden);
}
}
}
Чтобы сделать это можно применить везде, вы, вероятно, хотите, чтобы зарегистрировать его в качестве глобального фильтра в конфигурации WebAPI, когда ваше приложение самонастройки. Это будет выглядеть примерно так:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new RequireHttpsAttribute());
// ... More configuration ...
}
}
Если поиск в Интернете немного, вы можете найти много примеров подобных фильтров с более надежной логикой, которые могут лучше соответствовать вашим потребностям.
Вы пробовали что-нибудь? Что работает или не работает? – CGritton
глобальный фильтр действий, который проверяет схему входящих запросов и возвращает 403, если не https. – Nkosi