我试图做一个“我忘记了我的密码”功能。我的问题是,如果我尝试做一个学说查询并发送密码到电子邮件,它将检索加密的密码。我看了一些网站DoctrineGuard没有这个功能,只有注册和登录功能。sfDoctrineGuard问题
这是真的吗?
在这种情况下,我该如何做记忆密码功能?
感谢
我试图做一个“我忘记了我的密码”功能。我的问题是,如果我尝试做一个学说查询并发送密码到电子邮件,它将检索加密的密码。我看了一些网站DoctrineGuard没有这个功能,只有注册和登录功能。sfDoctrineGuard问题
这是真的吗?
在这种情况下,我该如何做记忆密码功能?
感谢
密码进行散列,然后保存到数据库中,因此一旦它被保存,你不能恢复密码。
有几种方法,你可以创建一个“密码丢失”功能:
如果我记得阅读权限,sfDoctrineGuard没有一个“getPassword”方法,它将执行所需的操作...未加密地检索密码。
我正在使用DuoSRX的第一个建议:创建一个新密码,使用$ user-> setPassword(它可以自动处理腌制&散列)并将它通过电子邮件发送给用户。建议用户登录并创建一个新密码。
从版本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
邮件(提防differences for prod/dev env.See also the official doc.):
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
添加发件人地址到app.yml
(和路由不为我工作自动) 。在app.yml和工厂中的地址。阳明应该是一样的,否则SMTP服务器可能会抱怨:
all:
sf_guard_plugin:
routes_register: true
default_from_email: [email protected]
触摸apps/your_app/modules/sfGuardForgotPassword/config/security.yml
到make the request form accessible while logged out:
secure:
is_secure: true
index:
is_secure: false
change:
is_secure: false
清除缓存与./symfony cc
。
现在忘记您的密码。
唯一的事情,而不是'应用程序/ your_app/sfGuardForgotPassword/config/security.yml',它应该读取'apps/your_app/modules/sfGuardForgotPassword/config/security.yml' – jaudette 2013-02-28 23:18:08
你说第一种方法不安全? 第二种方法你说...设置一个随机密码,发送它像一个链接.... user/reset/xdErDerfEFe其中“xdErDerfEFe”是标记,并在该操作做一个选择其中密码= ...并允许更改后? – nebur85 2010-04-26 21:31:21
第一种方法不太安全,因为如果某人有权访问用户收件箱,他可以看到他的新密码,而第二种方法中,令牌只能使用一次,然后在密码更改后无效。 – DuoSRX 2010-04-27 07:20:38
我尝试做类似... 1)输入密码,如果用户名已注册,请执行随机密码并执行setpassword。 2)它会发送一封电子邮件,比如......'用户名/密码/ xxxx',其中xxx是授权密码 3)如果您点击,则尝试使用此密码查找用户名。 我的问题是,密码是加密的,我无法找到真正的是如何encripted密码:( 你明白吗? – nebur85 2010-04-27 13:12:50