Сайт 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