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.