IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Web Service] Persistence de session SOAP


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut [Web Service] Persistence de session SOAP
    Bonjour à tous,

    J'essaye depuis ce matin de faire fonctionner une persistence de session SOAP.

    Je me demande si j'ai bien compris le principe, d'après moi :

    Le client SOAP établit une connexion avec le serveur.
    Le client envoi des requètes.
    Le serveur répond.
    On arrive en bout de page, l'utilisateur actualise la page.
    Le client récupère la session SOAP.
    Le client renvoi les requètes.
    Le serveur "croit" qu'il n'y a eu qu'une seule connexion.

    C'est ça ou pas ?

    Comment fait-on une persistence ? Je crois que j'ai fais toutes les pages du Web et du forum, voila mon code :

    Le client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	  $client = new SoapClient
    		  (
    		  null,
    		  array
    		  (
    			  'uri'=> 'http://xxxxxxxxxxxxxx.com/webservice/webservice.php',
    			  'location' => 'http://xxxxxxxxxxxxxx.com/webservice/webservice.php',
    			  'trace' => 1,
    			  'exceptions' => 0,
    		  )
    	  );
    Le serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	  $server = new SoapServer(null, array('uri' => ''));
     
    	  //Instanciation de  Class WebService
    	  $server->setClass("WSPublic");
     
    	  // Activation de la persistence
    	  $server->setPersistence( SOAP_PERSISTENCE_SESSION );
     
    	  $server->handle();
    Je m'en sors pas, et j'ai du mal à comprendre.

    Si quelqu'un peut m'éclaircir ça me ferais très plaisir :-)

    Merci d'avance

  2. #2
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 842
    Par défaut
    Je suis en plein dans cette problématique en ce moment aussi... Visiblement, très peu de gens utilisent des webservices stateful, ou bien ils font leurs propres bidouilles, car la doc à ce sujet est quasi inexistante.

    En fait la fonction setPersistence() ne marche que pour des appels sucessifs depuis un même script. Dès que tu recharges ta page côté client ou que tu changes de page, la session soap est perdue. Cela n'a donc aucune utilité pratique...

    La seule astuce que j'ai trouvé c'est ça :
    http://blog.reflexe-internet.com/200...avec-sessions/

    Par contre ça fonctionne mal avec Zend Framework et une authentification Zend_Auth par exemple... Je soupçonne des conflits entre plusieurs sessions/cookies parallèles.
    Raison pour laquelle je pense que pour finir je vais bricoler ma propre gestion de session soap :
    • le client s'authentifie sur le serveur soap, qui lui renvoit un token d'identification (= hash de données uniques avec un salt aléatoire ou temporel); token qui sera mémorisé dans une session php classique côté client
    • lors de l'authentification, si elle réussit, le serveur soap génère le hash, et stocke ce token en db, avec un timestamp d'expiration, et toute information utile pour récupérer l'id de l'utilisateur connecté ou le contexte nécessaire à l'appli
    • chaque appel ultérieur aux méthodes du webservice requiert le token en premier paramètre, qui permettra à la classe du webservice de récupérer le contexte de l'utilisateur stocké en DB, si le temps n'a pas expiré

    Ce n'est sûrement pas le plus optimal, mais au moins ça doit marcher. Et on peut utiliser une DB comme SQLite pour stocker ces infos de session, c'est adapté à ce type d'usage.

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/11/2013, 15h36
  2. Web Service - lecture de réponse SOAP "élégante"
    Par Leelith dans le forum Services Web
    Réponses: 2
    Dernier message: 23/06/2013, 23h01
  3. Authentification Web Service Java 6 - Header SOAP
    Par ameur1 dans le forum Services Web
    Réponses: 3
    Dernier message: 07/10/2011, 10h43
  4. Authentification Web Service Java 6 - Header SOAP
    Par ameur1 dans le forum Services Web
    Réponses: 0
    Dernier message: 06/10/2011, 18h10
  5. [SOAP][Web Service] erreur création d'une référence Web
    Par Maximil ian dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 20/06/2005, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo