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

XMLRAD Discussion :

[XMLRAD] Cookies pour login


Sujet :

XMLRAD

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut [XMLRAD] Cookies pour login
    Bonjour,

    Voilà mon problème : J'identifie un utilisateur en utilisant ma base de données, pour cela je gère l'évenement BeforeDispatch dans lequel je redirige tous les appels de services vers un service "TestLogin":

    procedure TMonModule.BeforeDispatch(
    const XMLCollection: IXMLCollection; const XMLRequest: IXMLRequest;
    var Handled: WordBool);
    var
    Action : string;
    begin
    Action := UpperCase(XMLRequest.Context.Values['Action']);
    if Action = '' then
    Action := XMLApplication.InitParams.GetValue('XMLC_DefaultAction');

    if (Action <> 'FORMLOGIN') and (Action <> 'LOGIN') Then
    begin
    XMLRequest.Context.SetValue('NextAction', Action);
    XMLRequest.Context.SetValue('Action', 'TestLogin');
    end;
    end;

    Lors de la connexion je stocke l'identifiant de l'utilisateur et d'autres paramètres dans des cookies puis je stocke la même chose dans la base, ensuite à chaque appel de service j'accède à ma base via l'évènement "BeforeXMLGram" d'un composant "TestLogin" posés sur le webmodule, le problème est que parfois je n'arrive pas à récupérer le contenu des cookies et que l'application devient instable ... la form d'identification s'affiche sans raisons ou ca fonctionne mais le skin n'apparaît pas (environ 1 fois sur 3 alors que c'est toujours le même thread qui est utilisé). Pire : lorsque j'utilise mon application en StandAlone, la récupération des cookies échoue à chaque fois. Je ne sais pas ou regarder pour corriger ça, peut être que ca vient de ma façon de lire et d'écrire le cookie, bref aidez moi !

    Ecriture du cookie :

    procedure TMonModule.LoginBeforeXMLGram(XMLGram: IXMLGram; InputDoc,
    OutputDoc: IXMLCursor; var Skip: Boolean);
    var
    (...)
    procedure SetLoginCookies;
    var
    CookiesExpiration: TDateTime;
    Path: string;
    begin
    Path := XMLApplication.InitParams.GetValue('XMLC_CookiesPath');
    CookiesExpiration := GetExpiration;
    XMLRequest.AddCookie('XMLC_Session', Session, '', Path, CookiesExpiration);
    XMLRequest.AddCookie('XMLC_UserName', User, '', Path, CookiesExpiration+1000);
    XMLRequest.AddCookie('XMLC_Skin', XMLRequest.Context.GetValue('XMLC_Skin'), '', Path, CookiesExpiration+1000);
    XMLRequest.AddCookie('XMLC_Language', XMLRequest.Context.GetValue('XMLC_Language'), '', Path, CookiesExpiration+1000);
    end;
    begin
    (...)
    end;

    Lecture des cookies :

    procedure TMonModule.TestLoginBeforeXMLGram(XMLGram: IXMLGram;
    InputDoc, OutputDoc: IXMLCursor; var Skip: Boolean);
    var
    (...)
    function ConnexionOK : Boolean;
    var
    Session, User, RemoteHost : String;
    Path : String;
    begin
    Result := false;

    Session := XMLRequest.GetCookie('XMLC_Session');
    Path := XMLApplication.InitParams.GetValue('XMLC_CookiesPath');
    XMLRequest.AddCookie('XMLC_Session', Session, '', Path, GetExpiration);

    User := XMLRequest.GetCookie('XMLC_UserName');
    RemoteHost := XMLRequest.Context.Values['Request.RemoteHost'];
    (...)
    end;
    (...)

  2. #2
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    Pour écrire dans les cookies, je te conseille d'utiliser l'instruction Assign dans ton XMLService TestLogin
    en Destination tu indiques Cookies avec le nom que tu souhaites.

    Si des paramètres sont mis dans les GlobalsParams, ils sont présent le Context.

    D'autre part pour lire les cookies il faut passer par le Context car tous les cookies sont extrait lors du décodage de la requête et sont copiés dans le Context, donc pas besoin de récupérer les cookies à la main à partir de la requête
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Merci de ta réponse, je vais faire quelques tests par contre je ne vois pas très bien comment utiliser assign du XMLService pour écrire un cookie ...

    > Pour écrire dans les cookies, je te conseille d'utiliser l'instruction Assign > dans ton XMLService TestLogin
    > en Destination tu indiques Cookies avec le nom que tu souhaites.

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Après quelques tests je remarque que lorsque mon application est en mode standalone il est impossible de récupérer les cookies (que ce soit par le context ou par GetCookie).

  5. #5
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    Il est vrai que ce n'est pas garantie que ca marche en standalone...
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    ...

    Que veut dire "ce n'est pas garanti", si j'ai bien compris une application "Stand Alone HTTP Server (Delphi 6)" ne gère pas les cookies, cela m'étonne car ca veut aussi dire qu'une application Standalone ne gère ni les skins, ni la sécurité (étant donné que ces deux fonctionnalités utilisent les cookies).

    Bref je pense que j'ai mal compris ... pourriez vous m'éclairer un peu plus sur le sujet ?

  7. #7
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    En stand Alone le serveur Web c'est un serveur HTTP venant des composants Indy... donc le "pas garantie" c'est "est-ce que le serveur HTTP Indy gère bien les cookies".
    Je dis ca mais j'ai pas encore eu le temps de vérifier... Je vais regarder et je te tiens au courant.
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Ca va je ne suis pas pressé mais j'aimerais savoir ce qu'il en est.

    Par contre j'ai toujours des problèmes avec les cookies, les caches, ... (Pages d'erreur serveur 500, page de login qui revient de temps en temps, poste sous Win2K SP3 qui necessitent une modif de la config pour accepter les cookies, ...). Y a t'il une manière spéciale de configurer IIS (parametres "etat de session", "cache", ...) ?

  9. #9
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    Le stand Alone est vraiment fait pour avoir un petit serveur HTTP, il traite une requête http simple et c'est tout, ne t'attend pas a ce qu'il fasse ce que fait un serveur IIS.

    plus généralement, la configuration par défaut du Serveur IIS est en général suffisante. Les extensions peuvent être virées mais pas la mise en mémoire cache des dll isapi.
    IE a une configuration par défaut qui accepte les cookies et ca suffit en général. mais comme je l'ai dit dans un message précédent, le domain est case sensitive dans les cookies...
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Merci de m'avoir mis sur la voie, deux choses étaient à l'origine de mes problèmes d'affichage/login/cookies :
    1- Les cookies sont effectivement case sensitive ... d'ou le retour au login sur certaines actions ...
    2- Le poste de développement était un windows 2000 Pro or celui ci limite le nombre de connexions à 10, donc parfois la feuille de style n'est pas chargée, parfois ce sont quelques images qui manquent ... en activant les connexions HTTP persistantes et les caches on rencontre moins de problèmes ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un cookie pour une fonction javascript
    Par tehsunshine dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/04/2007, 16h34
  2. Réponses: 3
    Dernier message: 13/12/2006, 22h21
  3. [phpBB] Créer un nouveau cookie
    Par cybertj dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 16/09/2006, 01h23
  4. [Cookies] Auto login sous horde
    Par maximenet dans le forum Langage
    Réponses: 2
    Dernier message: 24/07/2006, 19h35
  5. [Forum] Saisie de mot de passe pour login
    Par Alexlesilex dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 24/04/2006, 16h39

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