sfDoctrineGuard问题

发布于 2024-08-30 11:21:22 字数 163 浏览 7 评论 0 原文

我正在尝试执行“我忘记了密码”功能。我的问题是,如果我尝试执行 Doctrine 查询并将密码发送到电子邮件,它会检索加密的密码。我看一些网站,DoctrineGuard没有这个功能,只有注册和登录功能。

这是真的吗?

这种情况下,如何实现记住密码的功能呢?

谢谢

I'm trying to do a "i forgot my password" functionality. My problem is that if i try to do a Doctrine query and send password to email it retrieves password encrypted. I look at some webs that DoctrineGuard don't have this functionality and only have register and login functionality.

Is it true?

In this case, how i can do a remember password function?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

郁金香雨 2024-09-06 11:21:22

从版本 5.0.0 开始,伟大的 sfDoctrineGuard-Plugin 具有内置的忘记密码模块。但在相应的自述文件中,很少有如何使用它的信息:))

[TODO: document the forgot password feature]

要使用忘记密码功能,请执行以下操作(假设您已经安装了插件并且正常登录正常):

  1. 启用模块< /strong> 在 settings.yml 中(并在使用时启用 i18n):

    <前><代码>全部:
    。环境:
    启用的模块:[默认,sfGuardAuth,sfGuardForgotPassword]
    国际化:正确

  2. 添加路由 在routing.yml中(自动添加对我不起作用)。并确保您包含用于重定向的规则@homepage。

    <前><代码>sf_guard_forgot_password_change:
    网址:/忘记密码/:唯一密钥
    类:sfDoctrineRoute
    选项:{ 模型:sfGuardForgotPassword,类型:对象 }
    参数:{ 模块:sfGuardForgotPassword,操作:更改 }
    要求:
    sf_method: [获取、发布]

    sf_guard_forgot_password:
    网址:/忘记密码
    参数:{ 模块:sfGuardForgotPassword,操作:索引 }

  3. factories.yml中启用邮件发送(注意prod/dev 环境的差异。另请参阅官方文档。):

    <前><代码>全部:
    邮寄者:
    类别: sfMailer
    参数:
    日志记录:%SF_LOGGING_ENABLED%
    字符集:%SF_CHARSET%
    交付策略:实时
    运输:
    类:Swift_SmtpTransport
    参数:
    主机:smtp.example.com
    端口:25
    加密:~
    用户名:[电子邮件受保护]
    密码:p4ssw0rd

  4. 将发件人地址添加app.yml (以及对我来说不能自动工作的路由)。 app.yml 和 Factory.yml 中的地址应该相同,否则 smtp 服务器可能会抱怨:

    <前><代码>全部:
    sf_guard_插件:
    路线注册:真
    default_from_email: [电子邮件受保护]

  5. 触摸 apps/your_app/modules/sfGuardForgotPassword/config/security.yml使请求表单在注销时可访问

    <前><代码>安全:
    is_secure: 真
    指数:
    是_安全:假
    改变:
    是_安全:假

  6. 使用 ./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 :))

[TODO: document the forgot password feature]

To use the forgot-password feature do the following (assuming you already installed the plugin and normal signin is working):

  1. enable the module in settings.yml (and enable i18n as it's using it):

    all:
      .setting:
      enabled_modules: [default, sfGuardAuth, sfGuardForgotPassword]
      i18n: true
    
  2. 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.

    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 }
    
  3. enable the mailing in factories.yml (beware of 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
    
  4. 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:

     all:
      sf_guard_plugin:
        routes_register: true
        default_from_email: [email protected]
    
  5. Touch the apps/your_app/modules/sfGuardForgotPassword/config/security.yml to make the request form accessible while logged out:

    secure:
      is_secure: true      
    index:
      is_secure: false       
    change:
      is_secure: false
    
  6. clear the cache with ./symfony cc.

Now forget your password.

独留℉清风醉 2024-09-06 11:21:22

密码经过哈希处理然后保存到数据库中,因此一旦保存密码就无法恢复。

您可以通过多种方式创建“密码丢失”功能:

  • 通过电子邮件发送新密码(并不真正安全,但有些人还是喜欢它)
  • 向用户发送一封包含重置密码链接(和唯一令牌)的电子邮件,该链接可以是:为用户提供新密码,或允许用户输入新密码。

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 :

  • Send a new password by email (not really secure but some people like it anyway)
  • Send the user an email with a reset password link (and a unique token), which either gives the user a new password, or allow the user to enter a new password.
短暂陪伴 2024-09-06 11:21:22

如果我没记错的话,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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文