Совместное использование переменных сеанса из http и https versio - PullRequest
2 голосов
/ 22 марта 2010

Я пытаюсь исправить сайт ASP.NET, который мой друг испортил из старых технологий. Для пользователя на сайте имеются открытые и защищенные разделы. За кулисами общедоступные и частные сайты представляют собой отдельные веб-приложения с отдельными пулами приложений. Сложность возникает из-за того, что кажется, что приложения используют одни и те же идентификаторы сеанса (при переходе от общедоступных к защищенным страницам идентификатор сеанса остается прежним), но none переменных сеанса (InProc) получают перешел с публичного сайта на частный.

По сути, рабочий процесс состоит из того, что пользователь установил флажок («Я согласен») на общедоступном сайте (назовем эту страницу http://www.boring.gov/iAgree.aspx),, а затем вошел на защищенный сайт (назовем эту страницу). https://www.boring.gov/login.aspx). Запросы от родительского агентства в Вашингтоне о том, что пользователь не может добавить страницу входа в систему, пользователь должен нажимать «Я согласен» каждый раз, когда он входит в систему, и что материал «Я согласен» должен быть на отдельной странице.

Чего мне не хватает?

Как бы вы это сделали?

Примечания:
1 - Это размещается на одном сервере Windows 2003.
2 - Да, это государственное учреждение.
3 - Я бы сделал все по-другому, если бы делал преобразование, но меня не привели, пока корма не попала в вентилятор, и уже слишком поздно, чтобы переделывать вещи.
4 - Два предыдущих SO потока, которые кажутся связанными, но не применимы: this и that

Ответы [ 4 ]

2 голосов
/ 22 марта 2010

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

Типичный ключ может выглядеть следующим образом.

<machineKey     validationKey='A130E240DF1C49E2764EF8A86CEDCBB11274E5298A130CA08B90EED016C0 
14CEAE1D86344C29E67E99DF83347E43820050A2B9C9FC89E0574BF3394B6D0401A9' 
decryptionKey='2CC37FFA8D14925B9CBCC0E3B1506F35066FEF33FEB4ADC8' validation='SHA1'/>

Проверьте это для получения дополнительной информации.

2 голосов
/ 22 марта 2010

В вашем текущем сценарии вы не сможете использовать его в переменных сеанса proc.Поскольку эти два сайта являются разными приложениями, они не могут делиться информацией в памяти.

Я бы попытался сериализовать необходимую информацию в базу данных, чтобы оба приложения могли получать переменные.

1 голос
/ 26 февраля 2011

Вы можете опубликовать данные на странице SSL, установив свойство PostBackURL для кнопки отправки на первой странице, а затем перебрав коллекцию Request.Form на следующей странице.

http://msdn.microsoft.com/en-us/library/6c3yckfw.aspx

1 голос
/ 22 марта 2010

Не уверен, какие вещи вы хотите поделиться между 2 версиями. Если вы хотите поделиться неизменной информацией, такой как имя пользователя, идентификатор пользователя ... вам просто нужно перенаправить (или POST) из HTTPS в версию HTTP и отправить этим переменным длинный запрос (в форме URL или HTTP) (*). Если ваши материалы постоянно меняются, вы должны сериализовать эти переменные в постоянную область (файлы или БД).

(*) Если эти материалы чувствительны, используйте запросы на стороне сервера. Получатель поддерживает «веб-службу» (HTTP GET / POST на основе Restful, а не SOAP, я имею в виду), чтобы другой (вызывающий) мог обновлять свои переменные. Конечно, мы должны ограничивать абонентов только с localhost.

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