2009-05-30 18 views
7

De acuerdo con la cakebook section on the Auth component, que puede implementar la autenticación sencilla utilizando el siguiente controlador de Usuarios:¿Hay alguna manera fácil de obtener datos de usuario de AuthComponent desde una vista en 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()); 
    } 
} 

Me gustaría ser capaz de algo así como lo siguiente en mi punto de vista:

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

Es Hay una manera simple de hacer esto, o ¿tengo que sobrescribir la función de inicio de sesión y almacenar el nombre de usuario en la sesión?

actualización

Alexander's answer es exactamente lo que quería. Sin embargo, agregaré lo siguiente en caso de que alguien más se sienta confundido como yo.

Me llevó un tiempo entender que si cambia el modelo que utiliza autenticación de acceso (por ejemplo, es posible que tenga una mesa de 'personas' en lugar de 'usuarios'), entonces es necesario utilizar algo como:

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

Respuesta

12

En realidad esta información es fácilmente disponible de la sesión. Usas el ayudante de sesión para agarrarlo. Creo que la sintaxis correcta es:

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

EDIT:

Para CakePHP 2.X y sobre la sintaxis es:

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

Gracias. Esto es exactamente lo que estaba buscando. –

+0

Debe usar esta sintaxis en CakePHP 2.x $ userdata = $ this-> session-> read ('Auth.User'); $ username = $ this-> session-> read ('Auth.User.nombredeusuario'); – vinzcelavi

+0

Nota: al menos en Cakephp 2.7 no funciona, tiene que ser $ this-> Session .... El s en sesión debe ser mayúscula –

3

salida AuthComponent-Métodos del manual de CakePHP ....

Usted puede acceder a una información de usuario después de que un usuario ha iniciado sesión desde la sesión a través de $ this-> Auth-> usuario(). Entonces, si quiere el nombre de usuario, simplemente use esto en el controlador.

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

Ahora puede usar $ nombre de usuario en la vista.

2

Añadir un método en su AppController

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

y luego se puede acceder a él desde su punto de vista y/o diseños a través de $ DetallesUsuario

0

Para acceder autenticación vars en vistas sólo lo hacen:

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