Фреймворк веб-фермы и MVC 3: как требовать Https для метода действия?

#asp.net-mvc-3 #web-farm-framework #requiressl

#asp.net-mvc-3 #web-farm-framework #требуется l

Вопрос:

Я знаю, что вы можете это сделать:

 #if !DEBUG
    [RequireHttps] //apply to this action only
#endif
  

Что, если вы используете фреймворк веб-фермы, где сервер «контроллера» получает внешний запрос SSL 443, расшифровывает его, а затем пересылает его на первичные / вторичные серверы с использованием http 80 (без ssl?)

В этой среде я попробовал атрибут [RequireHttps], но он ответил «Страница перенаправляется неправильно» в Firefox. Firefox обнаружил, что сервер перенаправляет запрос на этот адрес таким образом, который никогда не будет завершен. Он распознает, что это не SSL, но поскольку он отключает SSL, MVC никогда не увидит атрибуты SSL.

Как бы вы переписали определенные методы действий, чтобы использовать https в MVC 3 в веб-ферме? Как вы можете это сделать с [RequireHttps] помощью или вам нужно выбирать каждый URL-адрес на вашем веб-сайте, требующий ssl, и «переписывать URL-адрес»?

Редактировать:

Я изменил контроллер, чтобы идентифицировать трафик порта 443 и перенаправлять его на https на веб-ферме. Я думал, что смогу обойтись только загрузкой сертификатов SSL на контроллере, но они также должны быть загружены на первичный и вторичный (или только).)

Ответ №1:

В вашем методе действий вы можете проверить безопасное соединение:

 if(Request.IsSecureConnection())
{
   // Secure connection logic here
}
  

Комментарии:

1. Проблема в том, что веб-ферма удаляет ssl перед его доставкой на основной веб-сервер. Запрос. IsSecureConnection выдает false.

2. Я настраиваю WWF для пересылки SSL-запроса на SSL-порт на втором сервере. Теперь это работает.

3. Итак, при правильной настройке контроллера ваше предложение тоже работает (за вычетом круглых скобок в свойстве).

4. Я рад, что смог помочь. У вас была возможность посмотреть, как это работает на самом деле? И да, извините, я не мог вспомнить, был ли это метод или свойство..