Pregunta sfDoctrineGuard
forgot-password sfguard (3)
Estoy tratando de hacer una funcionalidad "Olvidé mi contraseña". Mi problema es que si intento hacer una consulta de Doctrine y enviar una contraseña al correo electrónico, recupera la contraseña cifrada. Veo algunas webs que DoctrineGuard no tiene esta funcionalidad y solo tiene funcionalidad de registro e inicio de sesión.
¿Es verdad?
En este caso, ¿cómo puedo hacer una función recordar contraseña?
Gracias
Las contraseñas son hash y luego se guardan en la base de datos, por lo que no puede recuperar la contraseña una vez que se ha guardado.
Hay varias formas de crear una función de "contraseña perdida":
- Enviar una nueva contraseña por correo electrónico (no muy seguro, pero a algunas personas les gusta)
- Envíe al usuario un correo electrónico con un enlace para restablecer la contraseña (y un token único), que le da al usuario una nueva contraseña o le permite ingresar una nueva contraseña.
Si recuerdo leer correctamente, sfDoctrineGuard no tiene un método "getPassword" que haga lo que necesita para ... recuperar la contraseña sin cifrar.
Estoy utilizando la primera recomendación de DuoSRX: crear una nueva contraseña, guardarla con $ user-> setPassword (que maneja la salazón y el hash automáticamente) y enviársela por correo electrónico al usuario. Luego se le recomienda al usuario que inicie sesión y cree una nueva contraseña.
A partir de la versión 5.0.0, el gran sfDoctrineGuard-Plugin tiene incorporado un módulo de olvido de contraseña. Pero en el archivo Léame correspondiente hay poca información sobre cómo usarlo :))
[TODO: document the forgot password feature]
Para usar la función de contraseña olvidada haga lo siguiente (suponiendo que ya haya instalado el complemento y que el inicio de sesión normal esté funcionando):
habilite el módulo en
settings.yml
(y habilite i18n tal como lo está usando):all: .setting: enabled_modules: [default, sfGuardAuth, sfGuardForgotPassword] i18n: true
agregue rutas en routing.yml (la adición automática no funcionó para mí). Y asegúrese de incluir una regla @homepage que se usa para redirigir.
sf_guard_forgot_password_change: url: /forgot_password/:unique_key class: sfDoctrineRoute options: { model: sfGuardForgotPassword, type: object } param: { module: sfGuardForgotPassword, action: change } requirements: sf_method: [get, post] sf_guard_forgot_password: url: /forgot_password param: { module: sfGuardForgotPassword, action: index }
habilite el envío de correos en
factories.yml
(tenga cuidado con las diferencias para prod / dev env . Vea también el documento oficial ):all: mailer: class: sfMailer param: logging: %SF_LOGGING_ENABLED% charset: %SF_CHARSET% delivery_strategy: realtime transport: class: Swift_SmtpTransport param: host: smtp.example.com port: 25 encryption: ~ username: [email protected] password: p4ssw0rd
agregar dirección de remitentes a
app.yml
(y enrutamiento que no funciona automáticamente para mí). La dirección en app.yml y fábricas.yml debe ser la misma, de lo contrario, el servidor smtp podría quejarse:all: sf_guard_plugin: routes_register: true default_from_email: [email protected]
Toque las
apps/your_app/modules/sfGuardForgotPassword/config/security.yml
para hacer que el formulario de solicitud esté accesible mientras está desconectado :secure: is_secure: true index: is_secure: false change: is_secure: false
borre la caché con
./symfony cc
.
Ahora olvida tu contraseña.