Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2002, 14h44   #1
Nouveau Membre du Club
 
Inscription : novembre 2002
Messages : 92
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 92
Points : 25
Points : 25
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;
(...)
Sylvain Leray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2002, 22h01   #2
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
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/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2002, 10h32   #3
Nouveau Membre du Club
 
Inscription : novembre 2002
Messages : 92
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 92
Points : 25
Points : 25
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.
Sylvain Leray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2002, 11h10   #4
Nouveau Membre du Club
 
Inscription : novembre 2002
Messages : 92
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 92
Points : 25
Points : 25
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).
Sylvain Leray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2002, 09h19   #5
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
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/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2002, 17h36   #6
Nouveau Membre du Club
 
Inscription : novembre 2002
Messages : 92
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 92
Points : 25
Points : 25
...

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 ?
Sylvain Leray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2002, 19h42   #7
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
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/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2002, 11h01   #8
Nouveau Membre du Club
 
Inscription : novembre 2002
Messages : 92
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 92
Points : 25
Points : 25
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", ...) ?
Sylvain Leray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2002, 13h58   #9
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
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/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2002, 17h47   #10
Nouveau Membre du Club
 
Inscription : novembre 2002
Messages : 92
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 92
Points : 25
Points : 25
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 ...
Sylvain Leray est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h38.


 
 
 
 
Partenaires

Hébergement Web