Si yo tambien vi ese ejemplo bueno este es el que tengo y no tengo problemas:

Controlador admin:

function login()
                {
                        $this->layout = 'AdminIndex';
                        if(!empty($this->data))
                        {
                                $dbuser = 
$this->Admin->findByUsername($this->data['Admin']['username']);
                                if(!empty($dbuser) && 
($dbuser['Admin']['password'] ==
md5($this->data['Admin']['password'])))
                                {
                                        $this->Session->write('Admin', $dbuser);
                                        $dbuser['Admin']['last_login'] = 
date("Y-m-d H:i:s");
                                        $this->Admin->save($dbuser);
                                        $this->redirect('/admin_projects/');
                                }
                                else
                                {
                                        $this->set('mensaje', 'El "Usuario" y/o 
la "Contraseña"
son incorrectos...');
                                }
                        }
                }

El app_controller:

<?php
        class AppController extends Controller
        {
        function checkSession()
        {
                if (!($this->Session->check('Admin')))
                {
                        $this->redirect('/admins/');
                exit();
                }
        }
        }
?>

y la vista:

<form action="<?php echo $html->url('/admins/index/'); ?>"
method="post" id="FormStyle">
        <fieldset class="Cfieldset">
                <legend class="Clegend"> INICIAR SESI&Oacute;N </legend>
        <p>
                <?php echo $form->labelTag('Admin/username', 'Usuario:'); ?><br 
/>
                <?php echo $html->input('Admin/username', array('size'=>'30',
'class'=>'Cinput')); ?>
        </p>
        <p>
                <?php echo $form->labelTag('Admin/password',
'Contrase&ntilde;a:'); ?><br />
                <?php echo $html->password('Admin/password',
array('size'=>'30', 'class'=>'Cinput')); ?>
                </p>
                <p>
                <?php echo $html->submit('Ingresar', 
array('class'=>'Csubmit')); ?>
                </p>
                <p>
                        <?php
                                if(isset($mensaje))
                                {
                                        echo '<div 
class="Mensaje">'.$mensaje.'</div>';
                                }
                        ?>
                </p>
        </fieldset>
</form>

Y para cada funcion que no quiero que acceda sin verificarse le meto:

function cualquiera()
{
$this->checkSession(); /*este es el codigo*/
....
}



El 30/04/08, Hernán Durán <[EMAIL PROTECTED]> escribió:
> bueno claro aqui pongo lo que tengo
>
> en
> app/controllers/usarios_controller.php
>
> <?php
> > class UsuariosController extends AppController {
> >    var $name = 'Usuarios';
> >    function index () {
> >            $this->set('usuario',$this->Usuario->findall());
> >    }
> >
> >
> >    function login () {
> >
> >         $this->set('error', false);
> >         if (!empty($this->data))
> >         {
> >             //Primero, veamos si hay usuarios en la base de datos
> >             //con el nombre de usuario proporcionado por el usuario
> >             //utilizando el formulario:
> >
> >             $someone =
> > $this->Usuario->findByUsuario($this->data['Usuario']['usuario']);
> >
> >             //En este punto, $someone está lleno con datos del usuario, o
> > está vacío.
> >             //Comparemos la contraseña proporcionada a través del
> > formulario con la
> >             //almacenada en la base de datos.
> >
> >             if(!empty($someone['Usuario']['passwd']) &&
> > $someone['Usuario']['passwd'] == $this->data['Usuario']['passwd'])
> >             {
> >
> >                 //Nota: esperanzado en que las contraseñas estén ofuscadas
> > en la base de datos,
> >                 //tu comparación podría verse más como:
> >                 //md5($this->data['User']['password']) ==
> > ...
> >
> >                 //Esto significa que estas son iguales. Ahora podemos
> > construir alguna información básica de
> >                 //sesión para recordar este usuario como con
> > 'sesión-iniciada'
> >
> >                 $this->Session->write('Usuario', $someone['Usuario']);
> >
> >                 //Ahora que tenemos a los usuarios registrados en una
> > sesión, redireccionémoslos a
> >                 //la página de recibimiento para la aplicación.
> >
> >                 $this->redirect('/usuarios/index');
> >             }
> >             //Caso contrario, han provisto datos incorrectos:
> >             else
> >             {
> >                 //Recuerdas la variable $error en la vista? Cambiemos su
> > valor a verdadero:
> >
> >                 $this->set('error', true);
> >             }
> >         }
> >    }
> >    function logout()
> >     {
> >         //Redirecciona usuarios a esta acción si hacen click en el botón
> > Cerrar Sesión.
> >         //Todo lo que necesitamos hacer aquí es destruir la información de
> > sesión.
> >
> >         $this->Session->delete('Usuario');
> >
> >         //Y probablemente deberíamos redireccionarlos a alguna parte,
> > también...
> >
> >         $this->redirect('/');
> >     }
> >
> > }
> > ?>
> >
>
> en app/app_controller.php
>
> <?php
> class AppController extends Controller
> {
>     function checkSession()
>     {
>         //Si la información de sesión no ha sido definida...
>         if (!$this->Session->check('Usuario'))
>         {
>             //Forza al usuario a iniciar sesión
>             $this->redirect('/usuarios/login');
>             exit();
>         }
>     }
>      function beforeFilter()
>     {
>         $this->checkSession();
>     }
>
> }
> ?>
>
> y en la vista tengo
>
> app/views/login.thtml
>
> <?php if ($error): ?>
> >     <p>El usuario o contrase&ntilde;a no son validos, por favor intente de
> > nuevo.</p>
> > <? endif; ?>
> > <form action="<?php echo $html->url('/usuarios/login'); ?>" method="post">
> >     <div align="center">
> >         <p>Bienvenido al Programa de EPS</p>
> >         <div>
> >             <label for="username">Usuario:</label>
> >             <?php echo $html->input('Usuario/usuario', array('size' =>
> > 20)); ?>
> >         </div>
> >         <div>
> >             <label for="password">Contrase&ntilde;a:</label>
> >             <?php echo $html->password('Usuario/passwd', array('size' =>
> > 20)); ?>
> >         </div>
> >         <div>
> >             <?php echo $html->submit('Acceder'); ?>
> >         </div>
> >     </div>
> > </form>
> >
>
>
> es el ejemplo que esta en el manual
>
>
>
> 2008/4/30 <[EMAIL PROTECTED]>:
>
> >
> > Huy tal vez deberias mandar las funciones que hiciste para poder ver
> > que esta mal...
> >
> > --
> > ----------------------------------
> > http://www.metabolivia.com
> >
> > >
> >
>
>
> --
> Cordialmente,
>
> ING. HERNAN DURAN SANCHEZ
>
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
> Skype: randuh
> Blog: http://lamentehueca.blogspot.com
>
> >
>


-- 
----------------------------------
http://www.metabolivia.com

--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "CakePHP-es" de Grupos 
de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo 
electrónico a [email protected]
 Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
 Para obtener más opciones, visita este grupo en 
http://groups.google.com/group/CakePHP-es?hl=es.

-~----------~----~----~----~------~----~------~--~---

Responder a