Rosa, no se como lo estes trabajando pero yo hago esto:

*AppController.php*

class AppController extends Controller {

    public $components = array(
            'Session',
            'Auth' => array(
            'loginRedirect' => array('controller' => 'personas', 'action'
=> 'index'),
            'logoutRedirect' => array('controller' => 'users', 'action' =>
'login'),
            'authError' => 'No ha ingresado al sistema.',
                    )
            );
    public $helpers = array('Js'=>array('Jquery'), 'Html',
'Form','Session');

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->deny(); // todos los controllers son accesibles solo
logueando
    }
}

*User.php (Modelo)*

App::uses('AuthComponent', 'Controller/Component');
class User extends AppModel {

    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] =
AuthComponent::password($this->data[$this->alias]['password']);
        }
        return true;
    }


    public $validate = array(
        'username' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Escriba un nombre de usuario'
            )
        ),
        'password' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Escriba su clave'
            )
        ),
        'role' => array(
            'valid' => array(
                'rule' => array('inList', array('admin', 'digitador')),
                'message' => 'Please enter a valid role',
                'allowEmpty' => false
            )
        )
    );
}

*UserController.php (Controlador)*

class UsersController extends AppController {

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('add'); // Letting users register themselves
    }

    public function login() {
        if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                $id = AuthComponent::user('id');
                $nombre = $this->nombuse($id);
                $this->Session->write('Usuario.nombre', $nombre);
                $this->Session->write('Usuario.id',$id);
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash(__('Usuario o password
incorrecto.'), 'default', array(), 'auth');
            }
        }
        $this->layout = 'login';
    }

    public function logout() {
        //$this->Session->setFlash(__('Ha salido del sistema.','default',
array(), 'auth'));
        $this->Session->destroy();
        $this->redirect($this->Auth->logout());
    }

    public function add() {
        if ($this->request->is('post')) {
            $this->User->create();
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash(__('The user has been saved'));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The user could not be saved.
Please, try again.'));
            }
        }
    }
}

Esto solo es básico, no esta implementado lo de ACL, pero para que
comienzes estaria bien.

En esta linea:
                         $this->Session->write('Usuario.nombre', $nombre);

escribes lo que quieres que se almacene en Session, para recuperarlo en tu
vista usas esto:

                     <?php echo $this->Session->read('Usuario.nombre');?>

Espero te sirva,


Saludos,

*Aland Laines Calonge*
Twitter: @lainessolutions
http://about.me/aland.laines




El 21 de noviembre de 2012 04:15, Rosa Atienza Ribés
<[email protected]>escribió:

> Buenas a todos,
>
> Estoy empezando con Cake de hecho este va a ser mi primer proyecto en el
> que utilizo este framework y nada más empezar me he encontrado el primer
> problema.
>
> Queremos hacer 1 página inicial en el que en si estas logueado ponga
> bienvenido <nombre_usuario> y si no ponga el típico formulario para hacer
> login o un enlace para loguearse.
>
> Pues esto tan sencillo no consigo hacerlo, de ninguna manera, ya que si
> saco esta página inicial del "login" entonces es como si $_SESSION no se
> cargara y es un array vacío aunque el usuario se haya logueado de forma
> correcta.
>
>
> No se si me estoy explicando bien, cualquier cosa me comentais.
>
> ¿Hay forma de  solucionarlo? ¿o es que deben ser páginas independientes?
>
>
> Muchísimas gracias.
>
> Saludos
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> [email protected]
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/cakephp-es?hl=es.
>

-- 
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos 
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a 
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a 
[email protected]
Para tener acceso a más opciones, visita el grupo en 
http://groups.google.com/group/cakephp-es?hl=es.

Responder a