Te explico un método bastante bueno, y que creo que es lo que preguntas (es conveniente que estudies un poco el componente Auth de cake).
Esta mecánica se llama "One Time Login". Es muy simple, eficiente y segura.
Sólo te explicaré en que consiste, luego tu debes investigar mas afondo y ver la forma e implementarlo:
1- En la tabla de users, ademas de tener un campo para almacenar la contraseña encriptada se agrega un campo adicional 'KEY',
éste campo debe actualizarse cada vez que que se haga un UPDATE/INSERT sobre un registro [beforeSave()] y debe contener una llave aleatoria (Yo personalmente uso strings uuid).
2- La mecánica de recuperación de contraseña es la típica:
Se envia un correo y en él un vinculo a una direccion que hace "algo" para recuperar la clave, bien, pues la mecanica de "One Time Login" lo que hace es que se recibe desde la url (link del email) el ID de usuario y su KEY, se hace una búsqueda sobre la DB del usuario correspondiente, y si existe SE LE DA ACCESO al sistema para que desde su panel de "Mi cuenta" pueda cambiar la clave.
Es decir sería como hacer un simple LOGIN pero usando como clave la KEY aleatoria.
Recuerda que una vez que se identifica debes nuevamente regenerar la KEY !.
Lo que yo hago es que cada vez que alguien se identifica almaceno en un campo un 'laslogin' con el timestamp de cuando se identificó.
Entonces pongo la logica que genera las KEY en algun callback save(), luego al guardar el 'lastlogin' se lanza esta logica y se regenera la key automaticamente y asi no me preocupo de recordar cuando se deben regenerar las keys porque siempre se que se lanzar al ahcer un Update/Insert.
PD: Si necesitas algun código de apoyo/ejemplo puedes descargar mi CMS que utiliza esta misma mecánica.
Esta hecho con cakephp 2.0 pero no difiere en mucho la forma de implementarlo en 1.3 o 1.2.
El link al repo de github esta en mi firma, hechale un ojo al controlador UserController.php del plugin 'user'
Salu2
--
Christopher Castro.
Analista Programador Senior PHP/MySQL
Pamplona, España
QuickApps.eshttps://github.com/y2k2000/QuickApps