Delphi 7 SOAP-аутентификация и SessionID HowTo - PullRequest
0 голосов
/ 13 мая 2010

Я занимаюсь разработкой 3-уровневого приложения для работы с базами данных. 1.) БД MS SQL 2.) Сервер SOAP среднего уровня (с Delphi 7), подключенный к БД 3.) Клиенты (сначала win32 gui (с Delphi 7) - позже другие платформеры), подключенные к SOAP-серверу

Я выбрал сервер SOAP, который будет открыт для различных клиентов на более позднем этапе (также некоторые клиенты win32 gui будут размещены за границей - поэтому клиенты должны быть тонкими) (это, как предположил доктор Боб).

Я новичок в SOAP и изучал различные примеры и статьи об аутентификации. Но я не могу понять это.

Я создал сервер и клиент SOAP с помощью мастера приложений сервера SOAP Delphi, добавил модуль данных SOAP SERVER, добавил соединение с базой данных, некоторые наборы данных и поставщиков. Подключил клиента с помощью dbgrid и т. Д., И эта часть работает нормально.

Но я хочу, чтобы клиент сначала вошел в систему, а затем смог получить доступ к данным, и я хочу, чтобы сервер регистрировал каждое соединение, а также, когда клиент выходит из системы или отключается, поэтому я предполагаю, что мне нужен идентификатор сессии и время ожидания. Я также хочу, чтобы сервер мог сообщать клиентам, кто еще «подключен» (или чей сеанс все еще активен) в любой момент времени. Я понял, что мне нужно сделать заголовок аутентификации, но не могу понять, где и у кого я могу получить sessionID. Я предполагаю, что каждый раз, когда клиент подключается к серверу, сервер генерирует sessionID? Как мне это получить?

Любая помощь или предложения / указатель будет принята,

спасибо Джастин

Ответы [ 3 ]

1 голос
/ 18 мая 2010

Мыльные серверы не предоставляют сеансы по умолчанию. Ваш сервер должен реализовать управление жизненным циклом сеанса (вход / выход из системы) и т. Д.

Базовое решение описано здесь: Управление сеансами с помощью веб-служб Delphi 6

Обратите внимание, что это решение далеко от совершенства (см. Комментарии), например, оно не предоставляет механизм тайм-аута сеанса.

0 голосов
/ 19 мая 2011

Delphi XE использует более новую версию SOAP, возможно, это ответ:

https://forums.embarcadero.com/thread.jspa?messageID=200793

0 голосов
/ 14 мая 2010

ОК - разобрался - у меня не было:

InvRegistry.RegisterHeaderClass (TypeInfo (IThorPayServerDB), TAuthHeader);

в инициализации


Но я все еще не могу понять, как получить идентификатор сеанса - или какой-то уникальный способ узнать, какой сеанс клиента зарегистрирован на сервере - есть идеи?

...