Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-01-2009 02:45:26

slyvaan
Nouveau membre
Date d'inscription: 17-01-2009
Messages: 3

[Zend_Auth] Problème avec Auth, page blanche

Bonjour,

Je suis débutant dans l'utilisation du Zend Framework. Et en ce moment j'essaie de comprendre l'utilisation de Auth couplé avec Acl dans un système en MVC.

Pour Auth, je me suis reporté à http://framework.zend.com/manual/fr/zen … tion.using qui m'a fourni quelques renseignements sur comment la classe fonctionnait.

J'ai tenté d'appliquer ça mais à partir du moment ou je lance :

$authAdaptateur = new MyAuth($option1, $option2);

l'affichage de la vue ne marche plus, et je n'arrive pas à comprendre poruquoi. Une page blanche s'affiche, aucun message d'erreur. La classe MyAuth étant cependant "vide".

=Bootstrap

Code:

error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 1);
    date_default_timezone_set('Europe/Paris');
    
    // mise en place des répertoires et chargement des classes
    set_include_path('.'
        . PATH_SEPARATOR . './application'
        . PATH_SEPARATOR . './application/models'
        . PATH_SEPARATOR . './library'
        . PATH_SEPARATOR . get_include_path());
            
    include "Zend/Loader.php";
    Zend_Loader::registerAutoload();
    
    // Chargement de la configuration
    $config = new Zend_Config_Ini('./application/config.ini', 'general');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
    
    // Mise en place de la BDD
    $db = Zend_Db::factory($config->db);
    Zend_Db_Table::setDefaultAdapter($db);
    
    
    $auth = Zend_Auth::getInstance();
    $authAdaptateur = new MyAuth($option1, $option2);

    
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->addModuleDirectory('./application/modules');
    
    Zend_Layout::startMvc(array(
                        'layoutPath' => './application/layouts'
                        ));
    
    $frontController->dispatch();

=Class MyAauth.php

Code:

<?php

class MyAuth extends Zend_Auth_Adapter_Interface {

    public function __construct($option1, $option2)
    {
            // ...
    }
    
    public function authenticate()
    {
        // ...
    }
}

Les ... n'étant pas que pour question de clarté pour l'instant, aucun code n'apparait dans les méthodes.

Je n'arrive pas à saisir ce qui fait ce problème. Si vous aviez une idée... smile

Merci bien ^^

Petit Edit : Je viens de tester avec l'extend de l'adapter DbTable au lieu de Interface, et plus de problème de page blanche. A mon avis le problème se situe donc à ce niveau là. De là à savoir pourquoi, je ne saurai dire.

Je vais donc me tourner vers le DbTable et modifier un peu mon approche vu que mon système était un peu particulier (je comptais utiliser les sessions d'un forum invision board et harmoniser le tout, ça fera juste 2 log différents à faire).

M'enfin, si quelqu'un a une solution quand même, je suis preneur :p merci

Dernière modification par slyvaan (17-01-2009 22:40:48)

Hors ligne

 

#2 19-01-2009 09:44:27

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Auth] Problème avec Auth, page blanche

As tu regardé les logs de apache ?
As tu mis display_errors à 'on' pour php ?


----
Gruiiik !

Hors ligne

 

#3 19-01-2009 20:25:54

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: [Zend_Auth] Problème avec Auth, page blanche

J'voudrais pas avoir l'air de faire de la pub mais, essaie ça :

http://www.wowww.ch/index.php?post/2008 … t-Zend-Acl

Et dis moi ce que tu en penses par la même occasion. smile


Quelques tutoriaux Zend Framework !

Hors ligne

 

#4 21-01-2009 11:45:03

slyvaan
Nouveau membre
Date d'inscription: 17-01-2009
Messages: 3

Re: [Zend_Auth] Problème avec Auth, page blanche

Toutes les erreurs sont mises sur on, et rien n'apparait, c'est un peu comme si Zend_Layout, ou Zend_View je ne sais pas lequel, refusait d'afficher mes .phtml et les remplaçait par une page blanche.

Merci pour le lien, j'étudie ça de plus prêt, les explications sont assez claires smile

Hors ligne

 

#5 23-01-2009 19:13:38

slyvaan
Nouveau membre
Date d'inscription: 17-01-2009
Messages: 3

Re: [Zend_Auth] Problème avec Auth, page blanche

Bonsoir,

Les explications étant pourtant assez claires à premier abord, je crois que j'ai du mal à comprendre la logique de Acl / Auth au final.

Je me résume donc.

Le fichier acl.ini définit les rôles et les ressources ou ceux-ci ont accès, jusque là pas de problème, j'ai saisi le truc. J'ai donc changé mes rôles selon les accès que je voudrais, et les ressources selon les modules auxquels je voudrais qu'ils accèdent.

My_Controller_Plugin_Auth vérifie si l'utilisateur est authentifié et cherche si celui-ci a accès à la page qu'il souhaite ouvrir.

My_Acl_Ini, si je comprends bien, sert simplement pour My_Controller_Plugin_Auth à "décoder" le fichier Ini.

Pour ce qui est de l'adapter, je me suis référé à la documentation Zend, et je dois donc faire une Class sur le model de :

Code:

class MonAdaptateurAuth implements Zend_Auth_Adapter_Interface
{
    /**
     * Définition de l'identifiant et du mot de passe
     * pour authentification
     *
     * @return void
     */
    public function __construct($identifiant, $motdepasse)
    {
        // ...
    }

    /**
     * Réalise une tentative d'authentification
     *
     * @throws Zend_Auth_Adapter_Exception Si l'authentification
     *                                     ne peut pas être réalisée
     * @return Zend_Auth_Result
     */
    public function authenticate()
    {
        // ...
    }
}

la méthode authenticate() étant apparemment celle qui permet à l'utilisateur de s'authentifier. Donc, si je comprends bien, c'est ici que je dois vérifier le login/mot de passe (dans un cas général) et retourner Zend_Auth_Result::SUCCESS en cas de succès d'authentification ou Zend_Auth_Result::FAILURE, en cas d'échec. Je pense pouvoir me débrouiller pour ça, le login principal du site se fera par le forum IPB.

Jusque là, j'espère n'avoir pas fais d'erreur. Désolé si ça peut vous sembler simpliste mais je voudrais être sûr d'avoir saisi le fonctionnement général.

Les problèmes que j'ai maintenant, et dont je ne comprends pas très bien comment les résoudre.

Lors du :

Code:

$front->registerPlugin(new My_Controller_Plugin_Auth($auth, $acl)) ;

Une variable $auth a été passée en paramètre du plugin, cependant je ne trouve pas ou la définir et ce qu'elle doit être. Je suppose qu'il s'agisse d'un Zend_Auth::getInstance(); tout simplement, ce que j'ai mis, mais je voudrais confirmation, au cas ou smile

Le second problème vient du même endroit ; ;

Code:

Catchable fatal error: Argument 1 passed to My_Controller_Plugin_Auth::__construct() must be an instance of Zend_Acl, instance of Zend_Auth given, called in C:\...directory...\bootstrap.php on line 61 and defined in C:\...directory...\Auth.php on line 31

Le bootstrap à jour donc :

Code:

// ****
       // Config de base, gestion des erreurs et du timezone    
    // ****
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 1);
    date_default_timezone_set('Europe/Paris');
    
    // ****
    // Mise en place des répertoires de chargement des classes
    // ****
    set_include_path('.'
        . PATH_SEPARATOR . './application'
        . PATH_SEPARATOR . './application/models'
        . PATH_SEPARATOR . './application/modules/:module/models'
        . PATH_SEPARATOR . './library'
        . PATH_SEPARATOR . get_include_path());
        
    
    // ****
    // On charge l'autoload de Zend_Loader
    // ****
    include "Zend/Loader.php";
    Zend_Loader::registerAutoload();
    
    // ****
    // Chargement de la configuration générale
    // ****
    $config_db         = new Zend_Config_Ini('./application/config/database.ini', 'general');
    
    // ****
    // On l'affecte au registre
    // ****
    $registry         = Zend_Registry::getInstance();
    $registry->set('config', $config_db);
    
    // ****
    // Mise en place de la BDD
    // ****
    $db = Zend_Db::factory($config_db->db);
    Zend_Db_Table::setDefaultAdapter($db);
    
    // ****
    // ACL / AUTH
    // ****
    $auth                = Zend_Auth::getInstance();
    $acl_ini          = './application/config/acl.ini';
    $acl             = new Storm_Acl_Ini($acl_ini);
    
    // ****
    // setup controller
    // ****
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true)
                    ->addModuleDirectory('./application/modules')
                    ->registerPlugin(new My_Controller_Plugin_Auth($auth, $acl));

    // ****
    // On récupère le module dans lequel on se trouve afin de charger le layout correspondant
    // ****
    $routerLayout     = new Zend_Controller_Router_Rewrite();
    $requestLayout     =  new Zend_Controller_Request_Http();
    $routerLayout->route($requestLayout);
    $modulename     = $requestLayout->getModuleName();
    
    Zend_Layout::startMvc(array(
                            'layout'     => $modulename,
                            'layoutPath' => './application/layouts',
                        ));
    
    // ****
    // run!
    // ****
    $frontController->dispatch();

Le plugin n'ayant guère changé par rapport à l'exemple.

Merci beaucoup, et désolé si les questions semblent bêtes mais bon... J'ai un peu de mal smile

Dernière modification par slyvaan (23-01-2009 19:21:19)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages