Использование субдомена для идентификации клиента - PullRequest
0 голосов
/ 02 октября 2008

Я работаю над созданием приложения Silverlight, в то время как мы хотим, чтобы клиент получал URL-адрес вроде:

http://{client}.domain.com/

и логин, где часть {client} - это название их компании. так, например, Google будет:

http://google.domain.com/

Что мне было интересно, так это то, что в Silverlight кто-то смог использовать эту модель поддоменов для принятия решений при обращении к веб-серверу, чтобы вы могли переключаться на конкретную базу данных для выполнения запроса? К сожалению, это то, что совершенно необходимо для проекта, так как мы пытаемся облегчить их сотрудникам получение информации о нашей компании для нашего программного обеспечения.

Ответы [ 6 ]

0 голосов
/ 02 октября 2008

Разве это не сработает, чтобы разместить службу в отдельном поддомене, например, wcf.example.com, а затем настроить файл междоменной политики для службы, чтобы разрешить ему доступ к ней?

Пока это работает, вы можете просто загрузить Silverlight в соответствующий поддомен, а затем передать этот поддомен своему сервису и позволить ему делать свое дело.

Некоторые примеры этого ниже:

0 голосов
/ 02 октября 2008

@ Атес:

Именно это мы и сделали, когда писали систему ASP.Net ... мы выдвинули множество * .example.com хостов к веб-серверу и обработали их с помощью заголовков HTTP. Задержка возникает, когда WCF проталкивает информацию между клиентом и сервером ... она может существовать только в одном домене ...

Так, например, если у вас есть {client} .example.com и {sandbox} .example.com, служба WCF не может быть зарегистрирована для обоих. Он также не может быть зарегистрирован только на * .example.com или example.com, так что именно здесь выгода 22. все остальное у меня есть предварительные знания по обработке.

Я помню метод, с помощью которого приложение может «подделывать» другое доменное имя в определенных случаях. Я так понимаю, в этом случае мне нужно будет сделать такую ​​конфигурацию? Я еще много хочу исследовать.

0 голосов
/ 02 октября 2008

@ Ричард Б: Нет, я не могу вспомнить ни одного такого учебника, который видел раньше. Я постараюсь быть более многословным.

Подход на стороне сервера более подробно:

  1. Направьте * .example.com на тот же IP в настройках DNS.
  2. Бэкэнд-приложение, которое обрабатывает вход, проверяет HTTP-заголовок Host (например, серверная переменная HTTP_HOST на некоторых платформах). Он будет содержать точный subdomain.example.com, который клиент использовал для доступа к вашему серверу. Извлеките часть субдомена и продолжайте ...

Возможен также подход только на стороне клиента. Я не знаю много о Silverlight, но я предполагаю, что вы должны быть в состоянии связать Silverlight с JavaScript. Вы можете прочитать document.location с помощью JavaScript и передать его в свой апплет Silverlight, при котором дальнейшая выборка данных и т. Д. Логика будет опираться на поддомен, который был передан JavaScript.

0 голосов
/ 02 октября 2008

Георги:

Это помогло бы, если бы оно было статичным, но, увы, все будет динамично. Я надеялся получить 1x развертывание для приложения и использовать идею http://google.domain.com/ для переключения на правильную базу данных для пользователя. Я вспоминаю, как делал это однажды, когда мы создавали сайт asp.net, используя контекст домена, чтобы выяснить, какой скин использовать и т. Д.

Атес: Можете ли вы объяснить больше о том, что вы говорите ... похоже, вы близки к тому, что я пытаюсь придумать. Вы видели такой учебник для этого?

Единственный другой способ, с помощью которого я придумал эту работу - это иметь метабазу, которая при входе пользователя будет переключать их на соответствующую базу данных, как требуется ... просто думал, что говорит Client x ударить:

http://ClientX.domain.com/ было бы слаще, чем сказать, что надо нажать http://www.domain.com/ и войти в систему. Казалось, что они должны были ударить свое имя, и показать его персонализированный для них прямо с экрана входа в систему было бы гораздо более привлекательным для клиентской базы.

0 голосов
/ 02 октября 2008

Я думаю, что вы не можете сделать это только с помощью Silverlight, я знаю, что вы не можете сделать это без проблем с Javascript, Ajax и т. Д. Это связано с тем, что субдомен по соображениям безопасности обрабатывается браузером иначе, чем подстраница.

А как насчет следующей идеи: Вставьте правило перезаписи в программное обеспечение вашего веб-сервера. Поэтому, если вызывается http://google.domain.com, веб-сервер сам переписывает URL-адрес, например, http://www.domain.com/google/ (или лучше: http://www.domain.com/customers/google/). Это поможет?

0 голосов
/ 02 октября 2008

На стороне сервера вы можете проверить заголовок HTTP 1.1 Host, чтобы увидеть, как пользователь пришел на ваш сервер, и выполнить необходимые настройки на его основе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...