Файл cookie MVC3 не включается в запрос до обновления или посещения второй страницы. - PullRequest
0 голосов
/ 30 сентября 2011

ФОН: Я использую два сайта MVC3 для аутентификации в смешанном режиме. Я аутентифицирую человека с помощью Windows-аутентификации в Site1, а затем пересылаю этого человека на Site2, который использует аутентификацию по формам. Мое решение состояло в том, чтобы собрать информацию о пользователе в site1, как только пользователь прошел аутентификацию через windows auth. Затем я записываю эту информацию в файл cookie, а затем перенаправляю на Сайт 2. Сайт 2 затем использует информацию, найденную в файле cookie, для автоматического входа пользователя с использованием Forms Auth. Оба приложения находятся в одном домене и должны иметь возможность обмениваться файлами cookie, однако файл cookie недоступен после перенаправления до тех пор, пока страница не обновится или не перейдет по ссылке на сайте (посещение 2-й страницы).

В любом случае, вот моя проблема. Я создаю cookie, а затем пересылаю пользователя на сайт 2 с сайта 1.

...{cookie created here and added to response}...
HttpContext.Response.Redirect("http://site2.mydomain.com")

Когда я это делаю, в запросе нет файла cookie. Однако, попав на домашнюю страницу Site2, я могу нажать обновить, и тогда мой cookie-файл является частью запроса, и моя аутентификация работает.

Мне нужен мой ответ, чтобы записать куки-файл клиенту, а затем добавить этот куки-файл в запрос, но, похоже, при использовании Response.Redirect это пропускается ...

UPDATE: Я читал, что в запрос будут включены файлы cookie, только если файл cookie существует до его выполнения. Поскольку я записываю cookie в ответ на запрос, только последующие запросы будут содержать cookie. Итак, мне нужен способ заставить второй запрос, как только они получат мой ответ от первоначального запроса. Итак ...

Пользователь отправляет запрос ---> ответ возвращает с cookie ---> форсирует другой запрос (должен содержать cookie) ---> возвращает запрашиваемую страницу.

Могу ли я сделать это с помощью JavaScript? Может ли javascript проверить ответ на наличие cookie-файла с определенным именем и, если он найден, вызвать перенаправление на текущую страницу?

1 Ответ

1 голос
/ 07 октября 2011

Если вам нужно заставить обновление получить второй запрос, вы можете добавить параметр Query String из перенаправления Site1 HttpContext.Response.Redirect ("http://site2.mydomain.com? Refresh = 1"), а затем в Site2 вызвать перенаправить на ту же страницу без параметра строки запроса.

Это не совсем идеально, хотя. Не могли бы вы поместить эту информацию о файлах cookie в строку запроса для одноразового URL-адреса аутентификации, который затем сохраняет новый файл cookie и перенаправляет на домашнюю страницу Site2?

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