выберите страницу входа для аутентификации форм на основе пользовательских правил - PullRequest
0 голосов
/ 18 ноября 2010

У меня есть веб-сайт, который использует аутентификацию форм.проблема в том, что у меня есть сайт, установленный несколько раз на одних и тех же производственных серверах, потому что мне нужно иметь несколько разных страниц входа (в зависимости от домена в данном случае).после конкретной страницы входа в домен, остальная часть сайта такая же.очевидно, это требует большого обслуживания, поскольку каждая новая версия должна быть установлена ​​на сервере несколько раз (с изменением страницы входа в файле web.config).

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

Спасибо, Дани Авни

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Я видел, как это происходит разными способами, и многое зависит от того, как у вас настроены вещи в IIS.

Если все домены находятся на одном веб-сайте IIS, наиболее распространенным решением будет создание http-модуля или даже фактической страницы .aspx, которая загружает конфигурацию и на основе запрошенного URL-адреса отправляет пользователя на нужную страницу входа. Вы даже можете сделать «Server.Transfer ()», если хотите, чтобы URL-адрес пользователя оставался прежним. Затем в файле web.config вы по-прежнему устанавливаете одну страницу входа. Просто убедитесь, что каждая страница входа в систему разрешает доступ анонимным пользователям.

Если все домены являются отдельными сайтами IIS, я бы порекомендовал в этот момент просто поддерживать разные копии сайтов. Но реальный вопрос в том, зачем вам разные логины.

0 голосов
/ 18 ноября 2010

На моем рабочем месте есть пара веб-приложений, которые делают именно то, что вы пытаетесь описать.В зависимости от ситуации мы использовали несколько подходов.

Более распространенный подход, который мы используем, состоит в том, чтобы все действительные сайты в IIS указывали на один и тот же каталог.Логика для входа получает URL-адрес, определяет, какой клиентский сайт запрашивается, и учитывает это при входе в систему.Фактическая страница входа в систему одинакова для всех клиентских сайтов, поэтому она просто определяет, какую базу данных использовать.

Если вы хотите сделать что-то более причудливое, другой подход, который мы использовали, - это создать наш собственный MembershipProvider, после чего вы можете делать все, что захотите.У вас должен быть доступ к HttpContext.Current, если ваш класс вызывается провайдером аутентификации ASP.NET (вы должны установить провайдер членства в Web.config для вашего провайдера).

...