Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с HTTP сессией, проблема 
:(
    Опции темы
Гость_Victor
  Дата 20.5.2004, 13:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем доброго времени суток. Подскажите пожалуйста, могу ли я из моего ActiveX компонента подхватить сессию страницы где находится контрол, т.е. сессию между страницей и сервером(точнее ВЕБ сервисом) и работать с не й а не использовать InternetOpen?
Если да, то подскажите как? Кстати, страница написана на ASP.NET.


Заранее спасибо.
  Вверх
knave
Дата 20.5.2004, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



Думаю что нет, сессия то хранится на севере, а ActivX работает на клиенте и про сесии ничего незнет. Разве что ему можно в качестве параметров прописывать при генерации страницы нужные тебе данные, а потмо перед сабмитом через JS помещаеш данные в скрытые поля формы и все. Если что пиши, я такое уже делал. Либо опиши что зачем именно тебе нужна сессия/


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
Гость_Victor
Дата 20.5.2004, 14:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сессия ужна SOAP клиенту, который живёт в компоненте и юзает WinInet API для посылки реквеста.
  Вверх
DENNN
Дата 20.5.2004, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



О какой именно сессии идет речь?

Если о сессии, используемой для хранения переменных, то думаю что можно, если вспомнить как же работает механизм сессий.
А работает он так:
При открытии сессии клиенту присваивается уникальный идентификатор сессии. При последующих коннектах необходимо лишь запросить этот идентификатор (внимание!) у клиента.
Варинтов хранение этого идентификатора м.б. три:
1)Передача внутри урла в виде параметра. В php (и не только) уже встроен удобный механизм для "прозрачного" чтения этого идентификатора. Выглядит такая ссылка примерно так:
http://www.mydomen.ru/nextpage.php?SID=834823867112123
2)Запись в кукисах. В этом случае от сервера приходит запрос, на значение некоторого параметра, который содержит в себе session ID
3)Хранение в теле HTML скрытого поля со значением идентификатора.

Осталось только выяснить, какой способ используется в твоем случае.

Если вопрос про TCP сессию, то тогда наверно все же легче открыть собственную сессию и через нее перекачать необходимые данные.

PM ICQ   Вверх
Гость_Victor
Дата 20.5.2004, 17:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Речь идёт о сессии, которую открывается между страницей и веб сервисом. Эту же сессию НЕОБХОДИМО использовать и в соаповском клиенте. Потому, что, в хедере соаповского запроса идёт токен, который сгенерён на базе сессии между страницей и сервисом. А на сервисе в каждом методе идёт расшифровка токена и получение сессии и дальнейшая её проверка.
SID тут не подойдет, т.к. сервис написан на C# и смотрит переменную ASP.NET_SessionId где и прописан ID сессии. К томуже, по не понятным причинам, SOAP не дружит с методом GET.
  Вверх
Гость_Victor
Дата 20.5.2004, 17:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Проблема в том, что когда клиент соапа делает InternetOpen, то он автоматически генерит новую сессию, а мне этого не надо. Мне нужно использовать уже открытую сессию.
  Вверх
DENNN
Дата 20.5.2004, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Цитата
Речь идёт о сессии, которую открывается между страницей и веб сервисом.

Вот и думай что все же под сессией понимать smile.gif


Цитата
Потому, что, в хедере соаповского запроса идёт токен, который сгенерён на базе сессии между страницей и сервисом. А на сервисе в каждом методе идёт расшифровка токена и получение сессии и дальнейшая её проверка.

Не слишком хорошо знаком с SOAP. Можно поподробнее что все же где генериться и о сервисе на чьей стороне идет речь?


PM ICQ   Вверх
Гость_Victor
Дата 21.5.2004, 10:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Делов том, что есть две страницы ASP.NET. Одна для логина, а вторая содержит мой контрол. Когда клиент выполняет логин, первая страница выполняет метод веб сервис Login на что ей приходит как результат структура, содержащая инфу о юзере, в том числе и токен, собраный на бызе идентификатора сессии между страницей логина и сервисом. Затем первая страница кидает структуру с инфой о юзере в сессию и делает редирект на вторую. Далее, вторая страница, содержащая мой контрол, вызывает метод контрола для инициализации. Мой контрол, должен, используя соап клиент, а он работает используя WinInet API, выполнить ещё один метод веб сервиса. Соап клиент посылает запрос на сервис путём HttpSendRequest и в заголовке, передаёт токен юзера зашедшего на сайт. Дело в том, что для того чтобы послать запрос, нужно открыть коннект(InternetOpen). СЕРВИС, получив запрос, пытается вытянуть из этой сессии структуру, содержащую инфу о юзере, для сравнения токенов. Естественно он ничего не получит, так как сессия новая, а инфа лежит в предыдущей сессии. Вот и получается, что чоап клиент не должен открывать новую сессию, а использовать предыдущую. Тока как это сделать???? Я уже просто в шоке. Спасибо за любые советы.
  Вверх
DENNN
Дата 21.5.2004, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Извини чем-то конкренто помочь не смогу - не люблю ASP и не использую.

Возникает вопрос, зачем все так сложно? Только для того, чтоб использовать сервис Login?
Может проще подправить саму процедуру авторизации?
PM ICQ   Вверх
Гость_Victor
Дата 21.5.2004, 11:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











smile.gif Сервис не я писал.
Технологию я тоже не выбира, да и понять не могу, зачем им понадобился ActiveX.
ASP.NET сам прекрасно работает со своим сервисом, технологии то одинаковые. В общем лажа. Если б была функция для получения хандлера текущей сессии, небылоб проблем. Спасибо что откликнулись.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.