2010-12-16 16 views
5

Un cliente mío tiene un sitio que se ejecuta en CodeIgniter (no lo creé, y sabe muy poco sobre CI), y les gustaría agregar una característica de contraseña perdida, y no tengo idea de cómo abordar la implementación de esta característica usando CI. Conozco PHP con la mayor parte de mi experiencia con WordPress.CodeIgniter: función de contraseña perdida, ¿cómo implementar?

¿Puede alguien señalarme en la dirección correcta las mejores prácticas para implementar este tipo de cosas?

+2

Funcionará exactamente igual que en CI. Solo usted lo estructuraría dentro de la arquitectura MVC que CI usa. Hasta donde sé, no hay módulos genéricos de recuperación de contraseñas de CI. – DampeS8N

Respuesta

14

Esta es la forma en que me implementan:

  • El usuario hace clic en el enlace "¿Ha olvidado su contraseña" tipos
  • usuario en su/su dirección de correo electrónico
  • se pone una clave aleatoria y temporales contraseña en la tabla de usuario
  • Envíe un correo electrónico con un enlace para activar la contraseña que configuró. El enlace tiene la clave aleatoria
  • El usuario hace clic en el enlace. El enlace debe coincidir con la cadena al azar
  • activa la contraseña y borrar la contraseña temporal y la cadena aleatoria
  • usuario se conecta y cambia su contraseña a algo que quiere

CI es PHP por lo que había simplemente impleméntelo como lo haría en cualquier otro proyecto de PHP, excepto que lo hará dentro de los controladores/modelos/vistas.

3

Una buena manera en mi humilde opinión es la siguiente:

  • Si el usuario olvidó su pwd, que requerirá una nueva pwd. En este punto, debe almacenar un hash y una marca de tiempo en el db
  • Enviar un correo electrónico al usuario que contenga un enlace al sitio de restablecimiento con su hash almacenado en db como un get-param (por ejemplo, example.de/reset-pw/[hash del usuario aquí])
  • si el usuario sigue este enlace, el sitio verifica el tiempo transcurrido entre solicitar y usar este enlace (la mayoría de los sitios permiten una diferencia horaria de aproximadamente un día)
  • si todo es válido, el usuario puede ingrese nuevo pw

Puede usar otros sistemas como una pregunta secreta, etc., pero prefiero el modelo de correo electrónico debido a la seguridad maximizada (la pregunta también podría ser respondida por otros) mientras que necesita obtener acceso a los correos electrónicos de los usuarios aquí)

2

CodeIgniter - es un marco php regular que sigue el patrón MVC.

No tiene ninguna biblioteca de autor incorporada.

Tendría que utilizar alguna biblioteca de terceros. Uno de los mejores es Ion-auth. https://github.com/benedmunds/CodeIgniter-Ion-Auth

Howewer - si se trata de un sitio existente donde la gente puede registrarse - es probable que alguna biblioteca de autenticación ya esté implementada. Buscaría en la carpeta de sistema/aplicaciones/bibliotecas (o algunas veces/aplicaciones/bibliotecas) para ver qué bibliotecas hay allí y desde allí.

Cuestiones relacionadas