Похоже, у вас возникла пара вопросов из вашего вопроса:
- Обмен информацией о сеансе между несколькими поддоменами.
- Войдите в несколько доменов.
- Пребывание на правильном домене во время обратной передачи.
Чтобы предоставить информацию о сеансе нескольким поддоменам, вам нужно записать cookie сеанса в правильный домен, в данном случае .example.com
- см. Дополнительную информацию здесь: "Состояние сеанса ASP.NET, Файлы cookie и субдомены ".
Если вы хотите, чтобы пользователь входил во все домены одновременно, и вы используете проверку подлинности с помощью форм, вы можете использовать атрибут domain
элемента форм (обратите внимание на начальный период в домене путь):
<forms
name="name"
loginUrl="URL"
defaultUrl="URL"
domain=".example.com">
</forms>
Вам нужно будет настроить это на всех сайтах.
Что касается того, почему вы перенаправляетесь на localhost, а не на one.localhost при обратной передаче, вам нужно взглянуть на источник, который был обработан (вы включаете некоторую базовую информацию href или ваша форма явно отправить обратно на локальный хост вместо one.localhost)? Хороший инструмент, чтобы увидеть, что делает браузер: Fiddler .
Наконец, в качестве предупреждения при развертывании этого на нескольких серверах, не забудьте настроить ваш MachineKey на всех сайтах, чтобы убедиться, что они имеют одинаковое значение, чтобы они могли расшифровать сеанс , логин токены, viewstate и т. д. правильно.