【问题标题】:FOSUserBundle email reset link not directing to correct pageFOSUserBundle 电子邮件重置链接未重定向到正确页面
【发布时间】:2016-03-23 06:37:18
【问题描述】:

我正在使用 Symfony v2.6.13 和 FOSUserBundle

我正在使用 FOSUserBundle 在我的项目中实现用户身份验证。我正在使用我自己的模板(树枝)来显示login/register/reset 密码等,方法是覆盖它们的模板(即将相同的文件名放入我的Project/app/Resources/FOSUserBundle/views 文件夹中)。如此处所述:https://symfony.com/doc/master/bundles/FOSUserBundle/overriding_templates.html

我面临的问题是我通过电子邮件收到的用于重置密码的链接将我带回到原来的页面,即输入我的电子邮件/用户名的屏幕。电子邮件中生成的链接应将我带到一个屏幕,该屏幕有两个文本框供我更改密码,但我从未看到此页面。

我不知道为什么会发生这种情况。

config.yml

fos_user:
    db_driver: mongodb # other valid values are 'orm' mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: AppBundle\Document\User
    registration:
        form:
            # using this because I am running Symfony 2.6
            type: app_user_registration
    resetting:
        token_ttl: 0    # no restrictions on resetting password
        email:
            from_email:
                address:        Brendan@stackoverflow.com
                sender_name:    SenderName
    service:
        #default implementation, and uses Swiftmailer to send emails.
        mailer: fos_user.mailer.default

因此在电子邮件中它会生成一个重置链接,如下所示:

http://127.0.0.1:8000/resetting/reset/59wonV9cK7UPR122rhNZQAXMJwoXUz7dt23_O-a4aJ4

(注意:在本地机器上测试)。

当我点击链接时,它会带我去:

http://127.0.0.1:8000/resetting/reset 

随后的屏幕仅让我可以选择输入我的用户名或电子邮件以重置密码(即循环显示相同的屏幕)。

任何帮助将不胜感激。

编辑:

我正在使用 FOSUserBundle 提供的路由和我自己的路由的注释。

app/config/routing.yml:

app_website:
    resource: "@AppBundle/Resources/config/routing.yml"
    prefix:   /
app:
   resource: "@AppBundle/Controller/"
    type:     annotation
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

当检查我的路由($ php app/console route:debug)时,它们都是 FOSUserBundle 的默认值:

 fos_user_security_login           GET|POST ANY    ANY  /login                            
 fos_user_security_check           POST     ANY    ANY  /login_check                      
 fos_user_security_logout          GET      ANY    ANY  /logout                           
 fos_user_profile_show             GET      ANY    ANY  /profile/                         
 fos_user_profile_edit             GET|POST ANY    ANY  /profile/edit                     
 fos_user_registration_register    GET|POST ANY    ANY  /register/                        
 fos_user_registration_check_email GET      ANY    ANY  /register/check-email             
 fos_user_registration_confirm     GET      ANY    ANY  /register/confirm/{token}         
 fos_user_registration_confirmed   GET      ANY    ANY  /register/confirmed               
 fos_user_resetting_request        GET      ANY    ANY  /resetting/request                
 fos_user_resetting_send_email     POST     ANY    ANY  /resetting/send-email             
 fos_user_resetting_check_email    GET      ANY    ANY  /resetting/check-email            
 fos_user_resetting_reset          GET|POST ANY    ANY  /resetting/reset/{token}          
 fos_user_change_password          GET|POST ANY    ANY  /profile/change-password

【问题讨论】:

  • 你能显示你的登录/重置相关路由的routing.yml吗?
  • 我正在使用 FOSUserBundle 提供的路由和我自己的路由的注释。 app/config/routing.yml: app_website: resource: "@AppBundle/Resources/config/routing.yml" prefix: / app: resource: "@AppBundle/Controller/" type: annotation fos_user: resource: "@FOSUserBundle/Resources/config/routing/all.xml" 抱歉难以阅读,我编辑了我的原始帖子@Twifty

标签: symfony fosuserbundle


【解决方案1】:

问题是 token_ttl 设置为 0 意味着令牌立即过期,因此用户永远无法重置密码。我最初将其设置为 0 以绕过 FOSUserBundle 的“仅每 24 小时重置一次密码”,但这是不正确的。

删除此行解决了我的问题。

【讨论】:

    猜你喜欢
    • 2020-10-13
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 2019-07-31
    • 2018-07-11
    • 1970-01-01
    相关资源
    最近更新 更多