sfDoctrineGuard问题
我正在尝试执行“我忘记了密码”功能。我的问题是,如果我尝试执行 Doctrine 查询并将密码发送到电子邮件,它会检索加密的密码。我看一些网站,DoctrineGuard没有这个功能,只有注册和登录功能。
这是真的吗?
这种情况下,如何实现记住密码的功能呢?
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从版本 5.0.0 开始,伟大的 sfDoctrineGuard-Plugin 具有内置的忘记密码模块。但在相应的自述文件中,很少有如何使用它的信息:))
要使用忘记密码功能,请执行以下操作(假设您已经安装了插件并且正常登录正常):
启用模块< /strong> 在
settings.yml
中(并在使用时启用 i18n):<前><代码>全部:
。环境:
启用的模块:[默认,sfGuardAuth,sfGuardForgotPassword]
国际化:正确
添加路由 在routing.yml中(自动添加对我不起作用)。并确保您包含用于重定向的规则@homepage。
<前><代码>sf_guard_forgot_password_change:
网址:/忘记密码/:唯一密钥
类:sfDoctrineRoute
选项:{ 模型:sfGuardForgotPassword,类型:对象 }
参数:{ 模块:sfGuardForgotPassword,操作:更改 }
要求:
sf_method: [获取、发布]
sf_guard_forgot_password:
网址:/忘记密码
参数:{ 模块:sfGuardForgotPassword,操作:索引 }
在
factories.yml
中启用邮件发送(注意prod/dev 环境的差异。。 另请参阅官方文档。):<前><代码>全部:
邮寄者:
类别: sfMailer
参数:
日志记录:%SF_LOGGING_ENABLED%
字符集:%SF_CHARSET%
交付策略:实时
运输:
类:Swift_SmtpTransport
参数:
主机:smtp.example.com
端口:25
加密:~
用户名:[电子邮件受保护]
密码:p4ssw0rd
将发件人地址添加到
app.yml
(以及对我来说不能自动工作的路由)。 app.yml 和 Factory.yml 中的地址应该相同,否则 smtp 服务器可能会抱怨:<前><代码>全部:
sf_guard_插件:
路线注册:真
default_from_email: [电子邮件受保护]
触摸
apps/your_app/modules/sfGuardForgotPassword/config/security.yml
到 使请求表单在注销时可访问:<前><代码>安全:
is_secure: 真
指数:
是_安全:假
改变:
是_安全:假
使用
./symfony cc
清除缓存。现在忘记你的密码了。
From version 5.0.0 the great sfDoctrineGuard-Plugin has a built-in forgot-password module. But in the corresponding readme there is sparse info how to use it :))
To use the forgot-password feature do the following (assuming you already installed the plugin and normal signin is working):
enable the module in
settings.yml
(and enable i18n as it's using it):add routes in routing.yml (the automatic adding didn't work for me). And make sure you include a rule @homepage which is used for redirecting.
enable the mailing in
factories.yml
(beware of differences for prod/dev env.. See also the official doc.):add senders address to
app.yml
(and routing which doesn't work automatic for me). Address in app.yml and factories.yml should be same, otherwise the smtp-server might complain:Touch the
apps/your_app/modules/sfGuardForgotPassword/config/security.yml
to make the request form accessible while logged out:clear the cache with
./symfony cc
.Now forget your password.
密码经过哈希处理然后保存到数据库中,因此一旦保存密码就无法恢复。
您可以通过多种方式创建“密码丢失”功能:
Password are hashed and then save to the database, thus you can't recover the password once it has been saved.
There are several ways you can create a "password lost" function :
如果我没记错的话,sfDoctrineGuard 没有“getPassword”方法来执行它需要的操作...检索未加密的密码。
我正在使用 DuoSRX 的第一个建议:创建一个新密码,使用 $user->setPassword (自动处理加盐和哈希)保存它,然后通过电子邮件将其发送给用户。然后建议用户登录并创建新密码。
If I recall reading right, the sfDoctrineGuard doesn't have a "getPassword" method that would do what it needs to... retrieve the password unencrypted.
I'm using DuoSRX's first recommendation: creating a new password, saving it with $user->setPassword (which handles salting & hashing automatically), and emailing it to the user. The user is then advised to login and create a new password.