我正在尝试执行“我忘记了密码”功能。我的问题是,如果我尝试进行 Doctrine 查询并将密码发送到电子邮件,它会检索加密的密码。我看了一些网站,DoctrineGuard 没有这个功能,只有注册和登录功能。
这是真的吗?
在这种情况下,我该如何做一个记住密码的功能?
谢谢
我正在尝试执行“我忘记了密码”功能。我的问题是,如果我尝试进行 Doctrine 查询并将密码发送到电子邮件,它会检索加密的密码。我看了一些网站,DoctrineGuard 没有这个功能,只有注册和登录功能。
这是真的吗?
在这种情况下,我该如何做一个记住密码的功能?
谢谢
从 5.0.0 版本开始,伟大的 sfDoctrineGuard-Plugin 有一个内置的忘记密码模块。但是在相应的自述文件中,关于如何使用它的信息很少:))
[TODO: document the forgot password feature]
要使用忘记密码功能,请执行以下操作(假设您已经安装了插件并且正常登录正常工作):
启用模块(并在settings.yml
使用它时启用 i18n):
all:
.setting:
enabled_modules: [default, sfGuardAuth, sfGuardForgotPassword]
i18n: true
在 routing.yml 中添加路由(自动添加对我不起作用)。并确保包含用于重定向的规则@homepage。
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 }
启用邮寄(factories.yml
注意prod/dev env 的差异。另请参阅官方文档。):
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: test@example.com
password: p4ssw0rd
将发件人地址添加到app.yml
(以及对我来说无法自动工作的路由)。app.yml 和 factory.yml 中的地址应该相同,否则 smtp-server 可能会报错:
all:
sf_guard_plugin:
routes_register: true
default_from_email: test@example.com
在注销时触摸apps/your_app/modules/sfGuardForgotPassword/config/security.yml
以使请求表单可访问:
secure:
is_secure: true
index:
is_secure: false
change:
is_secure: false
清除./symfony cc
缓存。
现在忘记密码。
密码经过哈希处理,然后保存到数据库中,因此一旦保存密码,您将无法恢复密码。
有几种方法可以创建“密码丢失”功能:
如果我记得没看错的话,sfDoctrineGuard 没有“getPassword”方法来做它需要做的事情……检索未加密的密码。
我正在使用 DuoSRX 的第一个建议:创建一个新密码,使用 $user->setPassword 保存它(自动处理加盐和散列),然后通过电子邮件将其发送给用户。然后建议用户登录并创建一个新密码。