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

Discussion :

Fenêtre d'authentification

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut Fenêtre d'authentification
    Bonjour,

    Je dois réaliser un projet sous Qt qui consiste à gérer une base de donnée Mysql via une applications que j'aurais créer. Je souhaiterais faire une première fenêtre où l'utilisateur puisse se connecter. J'ai pas mal chercher sur le net, je pense avoir compris qu'il fallait mettre en place une boucle "if" qui compare avec l'identifiant présent dans la base de données. Mais voila je n'arrive pas à l'adapter à mon application.

    Je suis partie sur quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
     
        db.setHostName("localhost");
        db.setUserName("root");
        db.setPassword("");
        db.setDatabaseName("bdd");
     
     
     
    void MainWindow::on_connexion_bouton_clicked() // bouton valider
    {
        QString login, mdp;
        login=ui->edit_Login->text();   // récupération des QlineEdit
        mdp=ui->edit_password->text();   // récupération des QlineEdit
     
        if(db.authentitication(login,mdp)&& mdp !="")
        {
     
            this->hide();
            Interface_BDD interface_bdd;
            interface_bdd.setModal(true);
            interface_bdd.exec();
     
        }
        else
        {
            QMessageBox::information(this, tr("Connexion..."), tr("La connexion a échoué."));
        }
     
    }
    Je ne sais pas trop comment le continuer. Si quelqu'un pouvait me dire si c'est dans cette esprit la, et comment pourrais-je finir cette partie ... Je vous remercie :-)

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par défaut
    Une boucle if ? C'est quoi cette bete la ? Tu veux dire une condition if, nan ?

    Sinon je n'ai pas vraiment compris ton probleme... Pour se connecter ce serait comme ca de mon point de vue :

    - l'utilisateur rentre ses identifiants (dans une fenetre ou autre)
    - tu te connectes avec ces identifiants
    - si la connexion a reussi : tu continues (affiche les donnees, tant qu'a faire...), sinon tu reviens a la "fenetre" de connexion

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut
    Citation Envoyé par imperio Voir le message
    - l'utilisateur rentre ses identifiants (dans une fenetre ou autre)
    - tu te connectes avec ces identifiants
    - si la connexion a reussi : tu continues (affiche les donnees, tant qu'a faire...), sinon tu reviens a la "fenêtre" de connexion

    Oui, c'est exactement ce que je cherche à faire :-) Mais je ne sais pas comment mettre en place cette procédure afin que lorsque que je rentre mes identifiants dans les "QlineEdit" du GUI, ils soient comparer, à ceux inscrit dans la table correspondante, dans la base de données :-/

  4. #4
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Je pense qu’il y a un problème de compréhension de l’énoncé.

    À mon avis, la fenêtre d’identification doit permettre de fournir les identifiants qui servent à se connecter à la base de données. Ceux qui vont donc être passés dans ton objet QSqlDatabase avec les méthodes setUserName & consorts.

    Ensuite, tu vas appeler open() et tester le résultat. Si il est vrai, c’est que la connexion s’est bien passée. Sinon, c’est qu’il y a un problème, et il faut déterminer lequel (ce qui est un peu la merde avec Qt).

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    En fait, il y a deux situations possible, il faudra déjà voir à laquelle tu es confronté.

    Mais pour arriver à te faire comprendre, je vais devoir passer par un exemple concret.

    Prenons n'importe quel site web gratuit hébergé chez free ou chez un autre hébergeur similaire. Plusieurs sites sont hébergés sur un seul et même serveur, et, comme il y a une base de données associée à chaque site web, le serveur de base de données connait, fatalement, toutes les base de données qu'il gère et dispose d'une liste d'utilisateurs. Chaque utilisateur a des droits étendus (ajout, suppression et modification des tables de sa base de données) sur sa base de données personnelle. Pour que le propriétaire d'un de ces sites puisse se connecter à sa base de données spécifique, il faut qu'il remplisse les champs auxquels tu donne une valeur en dur aux lignes 1 à 6 du code que tu présentes dans ta première intervention. Lorsque l'on va tenter de créer la connexion, le serveur de base de données va vérifier si le nom d'utilisateur correspond à la base de données à laquelle il peut chipoter et si le mot de passe correspond à celui de l'utilisateur. Si tout correspond, le serveur va accepter la connexion, la connexion réussi. Et le propriétaire du site peut commencer à manipuler sa base de données comme il le veut.

    C'est une situation que l'on rencontre régulièrement en entreprise où chaque employé est connu comme un utilisateur de la base de données avec son propre identifiant, son propre mot de passe et un certain nombre de droits sur la base de données qui lui sont accordés. Ces droits sont spécifiques à chaque employés et lui permettent (ou non)
    • de consulter certaines tables particulières
    • de modifier certaines tables qu'il peut modifier
    • d'ajouter des utilisateurs
    • de modifier les droits d certains utilisateurs
    • d'ajouter de nouvelles tables dans la base de donnée
    • et sans doute encore plein de choses encore (mais je crois que j'ai quand meme fait le tour )

    Pour qu'un employé de la société puisse utiliser la base de donnée, il devra se connecter avec son identifiant et son mot de passe. Si l'identifiant est reconnu par le système de base de données et que le mot de passe correspond, la connexion est acceptée, l'employé est "connecté". Et l'utilisation qu'il peut faire de la base de données dépend des droits qui lui ont été accordé au niveau de la base de données.

    Maintenant, si le propriétaire d'un des sites dont j'ai parlé plus haut décide d'installer un forum ou un jeu en ligne (MMO ou non) sur son site, il va créer dans la base de données à laquelle il a accès une table qui reprendra les données "essentielles" de l'ensemble des utilisateurs du forum ou du jeu en ligne comme leur identifiant, leur pseudo, leur mot de passe (généralement crypté) et, pourquoi pas, les informations de payement . Les utilisateurs du forum ou du site ne sont absolument pas connus du système de gestion de bases de données. Il ne sont connus que du site (ou du forum) sur lequel ils sont inscrits.

    A ce moment là, la connexion à la base de données en elle-même se fera au travers des identifiants du propriétaire du site ou du forum, et la connexion au site ou au forum d'un utilisateur passera par une requête à la base de données lui demandant de trouver l'enregistrement qui correspond à l'utilisateur qui essaye de se connecter au site dans la table qui contient les informations essentielles sur les utilisateur du site (ou du forum).

    S'il y a un enregistrement et un seul qui est trouvé, on va ensuite vérifier si le mot de passe que l'on a obtenu correspond au mot de passe qui est enregistré (sous une forme cryptée) dans cet enregistrement. Si cela correspond, l'utilisateur du site est identifié et il est considéré comme connecté au site. S'il n'y a pas d'enregistrement trouvé (car, a priori, il n'y aura jamais plus d'un enregistrement correspondant à un identifiant donné), ou si le mot de passe ne correspond pas, l'utilisateur n'est pas identifié, et il n'est bien sur pas considéré comme connecté .


    La grosse différence entre ces deux situations est que, dans le premier cas, on s'adresse directement à la base de données elle-même alors que dans la deuxième situation, on va utiliser un "intermédiaire". Un serveur web, par exemple. Toutes les demandes vont alors transiter par le serveur web (ou par le serveur, de manière générale) qui les transférera (sous la forme de requêtes SQL) au système de base de données au travers d'une connexion établie au nom de l'utilisateur de la base de données (du propriétaire du site ou du forum, si tu préfères ).

    Tu auras compris avec ces explications que l'on va travailler de manière totalement différente dans les deux situations. Et pour pouvoir t'aider, nous devons donc savoir dans quelle situation tu te trouves
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/03/2008, 10h15
  2. Réponses: 3
    Dernier message: 02/11/2007, 23h09
  3. fenêtre d authentification
    Par k_boy dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/11/2007, 19h56
  4. Réponses: 28
    Dernier message: 25/06/2007, 22h09
  5. Pas de fenètre d'authentification avec .htaccess
    Par damjal dans le forum Apache
    Réponses: 2
    Dernier message: 02/11/2005, 08h40

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