2009-05-30 9 views
7

Selon le cakebook section on the Auth component, je peux mettre en œuvre l'authentification simple en utilisant le contrôleur utilisateurs suivants:Existe-t-il un moyen facile d'obtenir des données utilisateur AuthComponent à partir d'une vue dans CakePHP?

class UsersController extends AppController { 

    var $name = 'Users';  
    var $components = array('Auth'); // Not necessary if declared in your app controller 

    /** 
    * The AuthComponent provides the needed functionality 
    * for login, so you can leave this function blank. 
    */ 
    function login() { 
    } 

    function logout() { 
     $this->redirect($this->Auth->logout()); 
    } 
} 

Je voudrais être en mesure de quelque chose comme ce qui suit dans mon avis:

<?php 
    $username = $auth->user('username'); 
    echo "Welcome " . $username; 
?> 

Est existe-t-il un moyen simple de le faire, ou dois-je remplacer la fonction de connexion et stocker le nom d'utilisateur à la session?

Mise à jour

Alexander's answer est exactement ce que je voulais. Cependant, je vais ajouter ce qui suit au cas où quelqu'un d'autre serait confus comme je l'ai fait.

Il m'a fallu un certain temps pour comprendre que si vous modifiez le modèle qui utilise Auth (par exemple, vous pourriez avoir une table « personnes » au lieu des « utilisateurs »), alors vous devez utiliser quelque chose comme:

$persondata = $session->read('Auth.Person'); 

Répondre

12

En fait, cette information est facilement disponible à partir de la session. Vous utilisez l'assistant de session pour l'attraper. Je crois que la syntaxe correcte est:

$userdata = $session->read('Auth.User'); 
$username = $session->read('Auth.User.username'); 

EDIT:

Pour CakePHP 2.X et sur la syntaxe est la suivante:

$userdata = $this->session->read('Auth.User'); 
$username = $this->session->read('Auth.User.username'); 
+0

Merci. Ceci est exactement ce que je cherchais. –

+0

Vous devriez utiliser cette syntaxe dans CakePHP 2.x $ userdata = $ this-> session-> read ('Auth.User'); $ username = $ this-> session-> read ('Auth.User.username'); – vinzcelavi

+0

Note: au moins dans Cakephp 2.7 ne fonctionne pas, il doit être $ this-> Session .... Les s en session doivent être majuscules –

3

Découvrez AuthComponent-Méthodes dans le manuel CakePHP ....

Vous pouvez accéder à une information d'utilisateur après un utilisateur a ouvert une session de la session via $ this-> Auth> utilisateur(). Donc, si vous voulez le nom d'utilisateur, utilisez simplement ceci dans le contrôleur.

$ this-> set ('nom d'utilisateur', $ this-> Auth-> Utilisateur ('nom d'utilisateur'));

Vous pouvez maintenant utiliser $ username dans la vue.

2

Ajouter une méthode dans votre AppController

function beforeFilter() { 
$ath = $this->Auth->user(); 
$this->set('userDetails', $ath['User']); 
} 

Et vous pouvez y accéder à partir de vos vues et/ou mises en page par $ userDetails

0

Pour accéder à Auth vars dans les vues faites-le:

 
echo $session->read('Auth.User.id');