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 :

Impossible d'accéder au module Stat


Sujet :

XMLRAD

  1. #1
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 77
    Points : 55
    Points
    55
    Par défaut Impossible d'accéder au module Stat
    J'essaie d'accéder au module Stats de mon appli XMLRAD mais il m'affiche le message :
    Utilisateur Inconnu. Veuillez vérifier votre identifiant.
    J'accède à toutes mon appli sauf aux stats.
    J'utilise comme système d'authentification celle notifié dans le tutoriel "Comment gérer la sécurité à partir d'une base de données"

    La valeur du Context XMLC_Supervisor est à 1 ainsi que XMLC_Administrator.

    Si je cré un utilisateur dans le module sécurité d'XMLRAD, je ne peux pas bien sur me connecter avec cet utilisateur.
    Si je cré le même utilisateur dans ma base de donnée et dans le module sécurité, il m'indique un message "CIRCULAR..."

    Une idée, d'avance merci.

  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 avoir accès au module de stats ou au dashboard il faut qu'au moins un des utilisateurs soit dans le groupe superadmin (XMLC_Supervisor à 1)
    il faut aussi que les groupes par défaut dan sle fichier security.xml soit toujours là ! (avec les mêmes ID: -412 pour superadmins)

  3. #3
    Membre expérimenté

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Je confirme, j'avais eu le même problème car j'avais viré les groupes par défaut de mon fichier security.xml

    Alors j'ai recréé un nouveau projet, et j'ai recopié ces groupes ainsi que les users superadmin, admin dans mon fichier security.xml, et tout devient ok.

    Sylvain

  4. #4
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 77
    Points : 55
    Points
    55
    Par défaut
    Mon Fichier Security.xml est bien là, Le groupe -412 est bien là
    <Group>
    <ID>-412</ID>
    <Name>SuperAdmins</Name>
    <Infos/>
    <FieldName>XMLC_Supervisor</FieldName>
    <DirectoryGroupName/>
    </Group>
    Par contre dans users, je n'ai pas mes utilisateurs car ils sont dans ma Bdd

  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
    es-tu maintenant sur que dans le OnAuthenticate tu fais bien le Context.SetValue('XMLC_Supervisor', '1'); ?

  6. #6
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 77
    Points : 55
    Points
    55
    Par défaut
    Oui, sur n'importe qu'elle page, en faisant un XMLC_OUTPUTFORMAT = XML,
    <XMLC_Administrator>1</XMLC_Administrator>
    <XMLC_Supervisor>1</XMLC_Supervisor>

    <XMLC_User>1</XMLC_User>

    <XMLC_Guest>1</XMLC_Guest>

  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
    ok je crois que je sais !
    le module qui implémente le OnAuthenticate doit être aussi dans le pool XMLCAdm pour que l'authentification soit executé pour ce pool là !

  8. #8
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 77
    Points : 55
    Points
    55
    Par défaut
    OK, j'ai ajouté mon module dans le pool.
    J'avance, mais maintenant j'ai un message de violation d'accès.
    Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'. Lecture de l'adresse 00000044
    J'ai fait un iisreset, mais rien ne change.
    dans les trace, voila ce que je trouve.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    10:42:24584.3810-0TXMLCollectionThread1Execute - Exception in XMLApplication.XMLCollectionDispatchRequest: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'. Lecture de l'adresse 0000004410:42:24584.4705XMLC_DASHBOARD399TXMLApplication1GetAvailableXMLCollectionAndDispatchRequest - Exception: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'. Lecture de l'adresse 0000004410:42:24584.5555XMLC_DASHBOARD399TXMLApplication1InternalGlobalDispatchRequest - Exception: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'. Lecture de l'adresse 0000004410:42:24584.6215XMLC_DASHBOARD399TXMLApplication1InternalDispatchRequest - Exception: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'. Lecture de l'adresse 0000004410:42:24584.6855XMLC_DASHBOARD399TXMLApplication1TXMLApplication.HandleException for exception: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'. Lecture de l'adresse 0000004410:42:24589.4275FORMERROR399RequestStart310.27.200.146

  9. #9
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 77
    Points : 55
    Points
    55
    Par défaut
    d'une façon plus claire, voici la trace.
    10:42:24 584.381 0 - 0 TXMLCollectionThread 1
    Execute - Exception in XMLApplication.XMLCollectionDispatchRequest: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'.
    Lecture de l'adresse 00000044
    10:42:24 584.470 5 XMLC_DASHBOARD 399 TXMLApplication 1
    GetAvailableXMLCollectionAndDispatchRequest - Exception: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'.
    Lecture de l'adresse 00000044
    10:42:24 584.555 5 XMLC_DASHBOARD 399 TXMLApplication 1
    InternalGlobalDispatchRequest - Exception: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'.
    Lecture de l'adresse 00000044
    10:42:24 584.621 5 XMLC_DASHBOARD 399 TXMLApplication 1
    InternalDispatchRequest - Exception: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'.
    Lecture de l'adresse 00000044
    10:42:24 584.685 5 XMLC_DASHBOARD 399 TXMLApplication 1
    TXMLApplication.HandleException for exception: Violation d'accès à l'adresse 0206AEA4 dans le module 'CARTE_T.dll'.
    Lecture de l'adresse 00000044
    10:42:24 589.427 5 FORMERROR 399 RequestStart 3 10.27.200.146

  10. #10
    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
    essaye de mettre ton code de OnAuthenticate en commentaire pour voir si c'est lui qui pose problème...

  11. #11
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 77
    Points : 55
    Points
    55
    Par défaut
    en mettant en commentaire ces 2 bouts de code et en utilisant l'authentification de XMLRAD ( en créant bien sur un SuperAdmins), je peux rentrer dans les stats.
    procedure TCARTE_TBM.MyloginBeforeXMLGram(XMLGram: IXMLGram; InputDoc, OutputDoc: IXMLCursor; var Skip: Boolean);
    var
    Session: WideString;
    Expiration: TDateTime;
    temp_agtp : widestring;
    begin
    temp_agtp := Context.Values['UserName'] ;
    Context.Values['code_agtp'] := RIGHTstr(Context.Values['UserName'],3);
    Context.Values['passwordMD5'] := Context.Values['Password']; // From XMLC_FormLogin -> nom de la base donnée
    XMLCollection.DBExtract('qryUSRPwd');
    if Context.Values['code_agtp'] = '' then
    raise Exception.Create('Password invalid');
    Session := WideUpperCase(MD5(FloatToStr(Now)));
    // Prepare for Cookies
    Context.Values['XMLC_UserID'] := Context.Values['code_agtp'];
    Context.Values['XMLC_UserName'] := temp_agtp;
    Context.Values['XMLC_Session'] := Session;
    // Prepare for update DB Session + Expiration
    Context.Values['id_session'] := Session;
    if XMLC_TraceInfo then EventLog.TraceInfo(XMLRequest, ClassName, 'XMLC_UserID = ' + Context.Values['XMLC_UserID']);
    if XMLC_TraceInfo then EventLog.TraceInfo(XMLRequest, ClassName, 'code_agtp = ' +Context.Values['code_agtp']);
    if XMLC_TraceInfo then EventLog.TraceInfo(XMLRequest, ClassName, 'XMLC_UserName = ' + Context.Values['XMLC_UserName']);
    if XMLC_TraceInfo then EventLog.TraceInfo(XMLRequest, ClassName, 'temp_agtp = ' + temp_agtp);
    Expiration := Now+StrToIntDef(XMLApplication.InitParams.GetValue('XMLC_LoginTimeOut'), 720) / (24 * 60);
    Context.Values['expiration'] := FloatToStr(Expiration);
    XMLCollection.DBBatch('qryUpdateUSRSession');
    Context.Values['XMLC_SkipLoginAuthentication'] := '1';
    end;
    procedure TCARTE_TBM.XMLCollectionEventsloginAuthenticate(XMLCollection: IXMLCollection; e: TAuthenticateEventArgs);
    var
    Database: TDacDatabase;
    Session: WideString;
    USR_NAME: WideString;
    Expiration: TDateTime;
    I: Integer;
    GroupFieldName: WideString;
    begin
    { if XMLApplication.InitParams.Values['XMLC_Design'] = '1' then
    begin
    USR_NAME := 'AG27399' ;
    Context.Values['code_agtp'] := '399';
    Context.Values['XMLC_Authenticated'] := '1';
    exit;
    end; }
    Database := (XMLCollection as IXMLCollection2).GetDatabaseComponent('Database');
    if not Database.Connected then
    Database.Connected := True;
    Database.StartTransaction;
    try
    try
    e.Handled := True;
    XMLApplication.CheckSecurityFile;
    USR_NAME := Context.Values['XMLC_UserName'];
    Session := Context.Values['XMLC_Session'];
    Context.Values['code_agtp'] := rightstr(USR_NAME,3);
    Context.Values['id_session'] := Session;
    XMLCollection.DBExtract('qryUSRSession');
    if Context.Values['code_agtp'] = '' then
    begin
    Context.Values['XMLC_Authenticated'] := '0';
    XMLRequest.RaiseError('XMLC_AUTHENTICATION_REQUIRED', 'TTrainingWM.XMLCollectionEvents1Authenticate');
    end;
    Expiration := StrToFloatDef(Context.Values['expiration'], 0);
    if Expiration < Now then
    begin
    Context.Values['XMLC_Authenticated'] := '0';
    XMLRequest.RaiseError('XMLC_AUTHENTICATION_REQUIRED', 'TTrainingWM.XMLCollectionEvents1Authenticate');
    end;
    Context.Values['XMLC_Authenticated'] := '1';
    // Manage Groups
    for I := 0 to XMLApplication.SecurityGroups.Count-1 do
    begin
    GroupFieldName := XMLApplication.SecurityGroups.GetValueNo(I);
    if GroupFieldName <> '' then
    Context.SetValue(GroupFieldName, '0');
    end;
    XMLCollection.DBExtract('qryUSRGroups');
    Context.Values['XMLC_Guest'] := '1';
    if Context.Values['CA_UTI_NIV'] = '3' then
    begin
    Context.values['XMLC_User'] := '1';
    Context.values['ECOUTE_CLIENT'] := '1';
    end else if Context.Values['CA_UTI_NIV'] = '2' then
    begin
    Context.values['XMLC_User'] := '1';
    Context.values['XMLC_Administrator'] := '1';
    Context.values['ECOUTE_CLIENT'] := '1';
    end else if Context.Values['CA_UTI_NIV'] = '1' then
    begin
    Context.values['XMLC_User'] := '1';
    Context.values['XMLC_Administrator'] := '1';
    Context.Values['XMLC_Supervisor'] := '1';
    Context.values['ECOUTE_CLIENT'] := '1';
    end else if Context.Values['CA_UTI_NIV'] = '4' then
    begin
    Context.values['ECOUTE_CLIENT'] := '1';
    end;
    except
    Database.Rollback;
    raise;
    end;
    finally
    Database.Commit;
    end;
    end;

  12. #12
    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 fait dans l'article il manque une protection contre le fait que l' on trouve pas la database:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Database := (XMLCollection as IXMLCollection2).GetDatabaseComponent('Database');
     if Database = nil then
      raise Exception.Create('Database not found');
     if not Database.Connected then
      Database.Connected := True;
    d'autre part ce cas est traité dans l'article:


    La première consiste à utiliser le fichier Security.xml en le complétant des utilisateurs superviseurs qui seront autorisés à exécuter ces actions. il faudra alors dans le processus de login mettre a jour la session générée dans le fichier security.xml. Cette méthode a pour avantage de ne pas requérir une connexion à la base de données pour le Pool XMLCAdm, ce qui permet d'avoir accès à ces actions même si on a un problème de connexion.

    La seconde solution est de mettre le module contenant le composant XMLCollectionEvents et le XMLService MyLogin dans le Pool XMLCAdm ainsi que la Datasource. Il faudra aussi bien vous assurer que dans les InitParams, XMLC_PoolRedirect est à 1.

  13. #13
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 77
    Points : 55
    Points
    55
    Par défaut
    J'ai opté pour la deuxième solution.
    Il manquait l'ajout de la database dans le pool XMLCAdm

    Merci bp

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

Discussions similaires

  1. Module de classe : impossible d'accéder à une propriété
    Par Mathusalem dans le forum Général VBA
    Réponses: 2
    Dernier message: 10/11/2008, 14h11
  2. Erreur module : impossible d'accèder au code VBA
    Par naci77 dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/06/2008, 10h05
  3. Impossible d'accéder aux tables non créées par dbo
    Par Pete dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/10/2005, 14h01
  4. [py2exe] Impossible de charger un module...
    Par Mr Hyde dans le forum Py2exe
    Réponses: 3
    Dernier message: 28/09/2005, 17h17
  5. Réponses: 4
    Dernier message: 11/03/2005, 20h31

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