2009-05-30 12 views
7

Secondo il cakebook section on the Auth component, posso implementare l'autenticazione semplice utilizzando il seguente controller Utenti:C'è un modo semplice per ottenere dati utente AuthComponent da una vista in 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()); 
    } 
} 

mi piacerebbe essere in grado di qualcosa di simile a quanto segue nel mio punto di vista:

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

Is c'è un modo semplice per farlo, o devo sovrascrivere la funzione di login e memorizzare il nome utente per la sessione?

Aggiornamento

Alexander's answer è esattamente quello che volevo. Tuttavia, aggiungerò quanto segue nel caso in cui qualcun altro si confonda come ho fatto io.

Mi c'è voluto un po 'per capire che se si modifica il modello che utilizza Auth (ad esempio, si potrebbe avere una tabella di 'persone' invece di 'utenti'), allora avete bisogno di usare qualcosa come:

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

risposta

12

In realtà queste informazioni sono facilmente disponibili dalla sessione. Usa l'helper della sessione per afferrarlo. Credo che la sintassi corretta è:

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

EDIT:

Per CakePHP 2.X e sulla sintassi è:

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

Grazie. Questo e 'esattamente quello che stavo cercando. –

+0

Si dovrebbe usare questa sintassi in CakePHP 2.x $ userdata = $ this-> session-> read ('Auth.User'); $ username = $ this-> session-> read ('Auth.User.username'); – vinzcelavi

+0

Nota: almeno in Cakephp 2.7 non funziona, deve essere $ this-> Session .... Gli s in sessione devono essere maiuscoli –

3

Partenza AuthComponent-Metodi nel manuale CakePHP ....

è possibile accedere un info utente dopo che un utente ha effettuato l'accesso dalla sessione tramite $ this-> Auth-> user(). Quindi se vuoi il nome utente, basta usarlo nel controller.

$ this-> set ('username', $ this-> Auth-> User ('username'));

Ora è possibile utilizzare $ username nella vista.

2

aggiungere un metodo nella vostra AppController

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

e quindi è possibile accedervi da vostro punto di vista e/o layout tramite $ UserDetails

0

Per accedere Auth vars in vista solo farlo:

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