Сайт C# MVC для частного бета-тестирования

Я готовлю сайт к закрытой бета-версии. Веб-сайт может использоваться анонимно, а также позволяет пользователям входить в систему (используя Identity).

Во время приватной бета-версии мне нужно, чтобы весь сайт был защищен паролем, чтобы только пользователи с паролем имели доступ к основному сайту. Как только они туда доберутся, они могут выбрать просмотр сайта "Анонимно", или они могут зарегистрироваться для реальной учетной записи и просматривать с учетной записью.

Я после любого хорошего / дешевого решения этой проблемы, будь то

  • сторонний веб-сайт, который может обернуть весь мой сайт в безопасной / приватной обстановке
  • Простое приложение-привратник, которое получает все запросы на веб-сайт и просто перенаправляет их на полный веб-сайт, если пользователь прошел проверку подлинности
  • какое-то другое решение (возможно, с использованием прокси-сервера, такого как nginx/HAproxy или еще что-нибудь)

Решение должно быть не навязчивым к моей текущей кодовой базе, поэтому оно мне нужно, чтобы полностью обернуть мое приложение. После завершения бета-тестирования я смогу удалить упаковку (и, возможно, переназначить некоторые записи DNS), и сайт продолжит работу без шага аутентификации.

До сих пор я не смог найти подходящий сторонний сайт для использования.


Моя попытка создать свою собственную обертку

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

if(authenticated());
string url = "http://internalurl"+ Request.Url.LocalPath;

Это позволило мне сохранить свой правильный URL-адрес, как тот, который стоит перед пользователем, и его запросы просто перенаправляются в приложение, которое выполняет всю работу.

Пользователь не имеет представления о том, что запрос перенаправлен, поскольку он видит только правильную концепцию URURL.com/ somepage о получении ActionResult с внешнего сайта.

У меня тоже проблемы с этим, потому что это работает только частично. HTML извлекается с внутреннего сайта, однако запросы на файлы css и js не выполняются, потому что, когда сайт-оболочка получает запрос, подобный

properURL.com/Content/css/style.css

сайт-оболочка пытается найти файл style.css локально, вместо того, чтобы перехватить запрос статического файла и обработать его как действие (запросить его у внутреннего сайта).

Я пробовал много способов заставить IIS игнорировать этот запрос типа файла и передать запрос в RouteConfig, чтобы попасть в маршрут следующим образом:

routes.MapRoute(
            "Content", 
            "Content/{*something}",
            new { controller = "Home", action = "Content" } defaults
        );

Однако это не поможет

Я также попытался добавить обработчик в Web.config, но, похоже, он тоже не помогает.

      <add name="CssFileHandler" path="Content*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

Есть идеи?

1 ответ

Для этого вы можете создать учетную запись пользователя Windows, а затем настроить базовую аутентификацию в IIS с разрешениями для сайта. Затем пользователи могут войти с этим, чтобы попасть на сайт. Это не зависит от логики авторизации вашего сайта, поэтому они могут просматривать анонимно или создавать учетную запись и входить на сайт, используя аутентификацию asp.net. Это решение также не потребует каких-либо изменений в коде вашего приложения.

https://technet.microsoft.com/en-us/library/Cc772009(v=WS.10).aspx

Другие вопросы по тегам