2010-05-13 7 views
0

Je développe une application de base de données à 3 niveaux. 1.) MS SQL DB 2.) niveau moyen serveur SOAP (avec Delphi 7) connecté à la DB 3.) Clients (premier win32 IUG (avec Delphi 7) - plus tard d'autres platfomrs) connecté au serveur SOAPDelphi 7 Authentification SOAP et SessionID HowTo

J'ai choisi un serveur SOAP pour être ouvert à divers clients à un stade ultérieur (certains clients win32 gui seront également basés à l'étranger - les clients doivent donc être minces) (comme suggéré par Dr. Bob). Je suis nouveau à SOAP et j'ai regardé différents exemples et articles sur l'authentification. Mais je n'arrive pas à comprendre.

J'ai créé un serveur et un client SOAP avec l'assistant d'application serveur SOAP de Delphi et ajouté un module de données SOAP SERVER, ajouté une connexion à une base de données ainsi que des ensembles de données et des fournisseurs. Connecté le client avec dbgrid etc et cette partie fonctionne très bien. Mais je veux que le client se connecte d'abord et puisse ensuite accéder aux données et je veux que le serveur enregistre chaque connexion et aussi quand le client se déconnecte ou est déconnecté, donc je devine que j'ai besoin du sessionID et d'un timeout . Je veux aussi que le serveur puisse dire aux clients qui d'autre est "connecté" (ou quelle session est toujours active) à un moment donné. J'ai compris que je devais faire un en-tête d'authentification, mais je n'arrive pas à comprendre où et où je peux obtenir un sessionID. Je suppose que chaque fois qu'un client se connecte au serveur, le serveur génère un sessionID? Comment est-ce que je reçois ceci?

Toute aide ou suggestion/pointeur serait apprécié,

grâce Justin

Répondre

0

OK - tout compris - je n'avais pas:

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

dans l'initialisation


Mais je ne peux pas comprendre encore comment obtenir l'ID de session - ou d'une façon unique de savoir quelle session client est loged au serveur - toutes les idées?

1

Les serveurs de savon ne fournissent pas de sessions par défaut. Votre serveur doit mettre en œuvre le cycle de vie Session managment (Connexion/Déconnexion) etc.

Une solution de base est documentée ici: Managing sessions with Delphi 6 Web services

Notez cependant que cette solution est loin d'être parfait (voir les commentaires), par exemple, il ne ne pas fournir un mécanisme de délai d'attente de session.

+0

grâce je l'ai mis en place une solution similaire déjà. –

+0

ne hésitez pas à moi quelques points de réputation :) – mjn

Questions connexes