Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-09-2012 08:03:24

jfvole
Membre
Date d'inscription: 20-11-2010
Messages: 69

Authentification avec un AbstractTableGateway

Bonjour,

Quelques lignes de code pour mettre en oeuvre une authentification simple. On admet que vous utilisez une classe dérivée de AbstractTableGateway.

User est une classe qui contient entre autre un username et un password.

Code:

class User extends DefaultModel
{
    protected $password;
    public function setPassword($password) {$this->password = $password;}
    public function getPassword() {return (isset($this->password) ? $this->password : null);}
    
    protected $username;
    public function setUsername($username) {$this->username = $username;}
    public function getUsername() {return (isset($this->username) ? $this->username : null);}    
}

Pour en venir au bout de code dans UsersTable:

Code:

class UsersTable extends AbstractTableGateway
{
    protected $table ='Users';
...
    public function Authenticate(User $user)
    {
        $authAdapter = new AuthAdapter($this->adapter, $this->table,'username','password');        
        $authAdapter->setIdentity($user->username)->setCredential($user->password);
        
        $auth = new AuthenticationService();
        $result = $auth->authenticate($authAdapter);
        return $result;
    }
}

Et on l'ultilise directement avec le resultat de Auth.

Code:

                /* Initialisation de $User et de TableUsers... */

                $result = $usersTable->authenticate($user);

        if (!$result->isValid()) 
        {
            // Authentication failed; print the reasons why
            foreach ($result->getMessages() as $message) 
            {
                echo "$message\n";
            }
        } 
        else 
        {
            // Authentication succeeded; the identity ($username) is stored
            // in the session
            // $result->getIdentity() === $auth->getIdentity()
            // $result->getIdentity() === $username
        }

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