Club Informatique VINCI

Le C.I.V représente un groupement d'étudiants constituant le club informatique de la Grande École Marocaine de l'Informatique et des Réseaux du Télécom VINCI -Rabat-. (L'utilisation de Internet explorer 6/7 n'est pas recommandée, on vous propose Firefox)

Les forums du C.I.V attend vos propositions en ce qui concerne le graphique, les catégories, et les sections.

Connexion

Récupérer mon mot de passe

Sondage

Quel est votre antivirus préféré ?
16% 16% [ 4 ]
32% 32% [ 8 ]
0% 0% [ 0 ]
0% 0% [ 0 ]
0% 0% [ 0 ]
36% 36% [ 9 ]
0% 0% [ 0 ]
0% 0% [ 0 ]
8% 8% [ 2 ]
8% 8% [ 2 ]

Total des votes : 25

Qui est en ligne ?

Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun


[ Voir toute la liste ]


Le record du nombre d'utilisateurs en ligne est de 23 le Mer 17 Oct - 12:31

Statistiques

Nos membres ont posté un total de 1292 messages dans 373 sujets

Nous avons 437 membres enregistrés

L'utilisateur enregistré le plus récent est intellection


    Service d'authentification Zend/Flex

    Partagez
    avatar
    El Maligno Angelo
    Administrateur
    Administrateur

    Messages : 373
    Points : 4030
    Réputation : 8
    Date d'inscription : 25/04/2009
    Age : 28
    Localisation : ErRabat

    Service d'authentification Zend/Flex

    Message par El Maligno Angelo le Mer 4 Aoû - 2:27

    L’authentification permet d’identifier une personne au sein d’un système, afin de lui permettre de bénéficier de certains services, acquérir certaines informations, et effectuer les taches permises.
    Pour réaliser ce module, on aura besoin d’une table dans la base de données du système, qui contient, au moins, un champ login, un deuxième pour le mot de passe, et un troisième déterminant les privilèges de l’utilisateur. Et bien évidement d’autre champ pour les informations complémentaires sur l’utilisateur. (Nom, date de naissance…).
    Maintenant

    Code:


    CREATE TABLE IF NOT EXISTS `user` (
    `login` varchar(20) NOT NULL,
    `pwd` varchar(20) NOT NULL,
    `nom` varchar(50) NOT NULL,
    `prenom` varchar(100) NOT NULL,
    `email` varchar(100) NOT NULL,
    `tel` varchar(20) NOT NULL,
    `adresse` varchar(300) NOT NULL,
    `fonction` int(11) NOT NULL,
    PRIMARY KEY (`login`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;



    Maintenant c’est temps d’exploiter ces informations, à travers un script PHP, en utilisant les fonctionnalités de la classe zend_auth du ZF. Ce script, représente le service d’authentification dans le module.
    Pour utiliser zend_auth, il faut passer par ce qu’on appelle un adaptateur. Ce dernier permet de gerer un cas precis d’authentification ( notre cas : une base de données). Ici, on vas utiliser Zend_Auth_Adapter_DbTable.

    Avant d’appeler la méthode authenticate, qui permet l’authentification, il faut tout d’abord configurer l’adaptateur, en lui passant la connexion (instance d’un adaptateur de connexion avec une base de données), la table d’utilisateurs, la colonne du login, et celle du mot de passe.
    Ici,

    Code:
    $auth = new Zend_Auth_Adapter_DbTable($cn);
    $auth->setTableName('user')
    ->setIdentityColumn('login')
    ->setCredentialColumn('pwd');

    Ici, $cn c’est une instance de l’adaptateur Zend_Db_Adapter_Pdo_Mysql qui permet la connexion avec une base de données MySQL.
    Maintenant

    Code:
    $cn = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host' => 'localhost',
    'username' => 'root',
    'password' => '0000',
    'dbname' => 'crm'
    ));

    Maintenant on a les bases d’utilisation, l’étape suivant c’est d’implémenter le code du service d’authentification en totalité.
    Donc, après avoir créé un projet ZF et flex, on ajoute une classe PHP (perspective php) LoginService.





    Notre service prend un nom d’utilisateur et un mot de passe et renvoi l’instance de l’utilisateur authentifié dans le cas positif, sinon il renvoi null.

    Dans le fichier on met le code suivant :

    Code:
    class LoginService {
    public function login($user,$pwd){
    $cn = new Zend_Db_Adapter_Pdo_Mysql(array(
      'host' => 'localhost',
      'username' => 'root',
      'password' => '0000',
      'dbname' => 'matprof' ));
    $auth = new Zend_Auth_Adapter_DbTable($cn);
    $auth->setTableName('user')
      ->setIdentityColumn('login')
      ->setCredentialColumn('pwd');
    $auth->setIdentity($user)
      ->setCredential($pwd);
    $result=$auth->authenticate();
    if($result->isValid()){
    return $auth->getResultRowObject();
    }else{
      return null;
    }
    }
    }

    En passe à la perspective Flash , en ouvre l’onglet service , pour qu'on ajoute un nouveau service.



    On choisi PHP, puis suivant. Dans la fenêtre suivant on choisi le fichier de classe qu’on vient de créer.



    Puis Entrer 2 fois.
    S’il y a déjà des services, c’est possible que Flash builder fait automatiquement ce travail des qu’on ajoute le fichier de classe PHP.
    Finalement on aura :



    Là on a besoin de spécifier les types utilisés.



    Pour les types d’entrée : string, string
    Pour le type de retour : User. (On n’a pas ce type !!)
    Pour créer ce type automatiquement, il suffit de créer un service en se basant sur la table user.



    Dans la fenêtre suivant on clique le lien, « cliquez ici pour générer un exemple ».
    Dans la fenêtre suivante, on remplie les champs avec les bonnes informations, puis on clique, « connexion à la base de données », on choisi la table user, puis touche entré 3 fois.



    Et c’est maintenant qu’on peut configurer les types.





    Maintenant on crée un formulaire simple pour passer les informations d’authentification.



    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Declarations>
    <!-- Placer ici les éléments non visuels (services et objets de valeur, par exemple). -->
    </fx:Declarations>
    <s:Panel x="290" y="154" width="367" height="200" fontFamily="Times New Roman" fontSize="13">
    <mx:Form x="45" y="9" width="269" height="124">
    <mx:FormItem label="Utilisateur">
    <s:TextInput id="txtUser"/>
    </mx:FormItem>
    <mx:FormItem label="Mot de passe">
    <s:TextInput id="txtPwd" displayAsPassword="true"/>
    </mx:FormItem>
    <mx:FormItem>
    <s:Button label="S'authentifier" id="button" click="button_clickHandler(event)" width="128" fontSize="14" fontWeight="normal" fontStyle="normal" textDecoration="none" lineThrough="false" color="#60655E"/>
    </mx:FormItem>
    </mx:Form>
    </s:Panel>
    </s:Application>

    On sélectionne le bouton, dans l’onglet des propriétés on lie le click avec l’appel du service.







    Maintenant il ne reste que le suivie de l’événement « valeur reçue du serveur », pour y arriver on modifie l’objet automatiquement créé, pour qu’il écoute l’événement souhaité.

    Code:
    <s:CallResponder id="loginResult" result="loginResult_resultHandler(event)"/>

    Puis on met le traitement dans la méthode loginResult_resultHandler.

    Code:
    protected function loginResult_resultHandler(event:ResultEvent):void
    {
    if((loginResult.lastResult)!=null){
    currentState="Membre";
    }else
    Alert.show("Nom d'utilisateur ou mot de passe incorrecte");
    }

    Pour que ce dernier code fonctionne, il faut avoir un état «Membre».

    Tous droits réservés. O.JMILI


    _________________
    it's awesome to feel...what others can't, but i think doin' what poeple cannot do make u surpass feelings step !!

    naima
    Membre actif
    Membre actif

    Messages : 36
    Points : 3233
    Réputation : 1
    Date d'inscription : 04/05/2009

    Re: Service d'authentification Zend/Flex

    Message par naima le Lun 9 Aoû - 2:50

    cheers es interssant Smile

      La date/heure actuelle est Mer 13 Déc - 5:59