FOSUserBundle 电子邮件重置 link 未指向正确的页面
FOSUserBundle email reset link not directing to correct page
我正在使用 Symfony v2.6.13 和 FOSUserBundle
。
我正在使用 FOSUserBundle 在我的项目上实现用户身份验证。我正在使用我自己的模板(树枝)通过覆盖他们的模板(即将相同的文件名放入我的 Project/app/Resources/FOSUserBundle/views
文件夹)来显示 login/register/reset
密码等。如此处所述:https://symfony.com/doc/master/bundles/FOSUserBundle/overriding_templates.html
我面临的问题是我通过电子邮件收到的 link 重置密码的邮件将我带回原来的页面,即输入 email/username 的屏幕。电子邮件中生成的 link 应该将我带到一个屏幕,该屏幕有两个文本框供我更改密码,但我从未看到此页面。
我不知道为什么会这样。
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@whosebug.com
sender_name: SenderName
service:
#default implementation, and uses Swiftmailer to send emails.
mailer: fos_user.mailer.default
所以在电子邮件中它会生成一个重置 link 像这样:
http://127.0.0.1:8000/resetting/reset/59wonV9cK7UPR122rhNZQAXMJwoXUz7dt23_O-a4aJ4
(注意:在本地机器上测试)。
当我点击 link 时,它将带我到:
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
问题是 token_ttl
设置为 0 意味着令牌立即过期,因此用户永远无法重设密码。我最初将其设置为 0 以绕过 FOSUserBundle 的 'only reset your password once every 24 hours',但这是不正确的。
删除此行解决了我的问题。
我正在使用 Symfony v2.6.13 和 FOSUserBundle
。
我正在使用 FOSUserBundle 在我的项目上实现用户身份验证。我正在使用我自己的模板(树枝)通过覆盖他们的模板(即将相同的文件名放入我的 Project/app/Resources/FOSUserBundle/views
文件夹)来显示 login/register/reset
密码等。如此处所述:https://symfony.com/doc/master/bundles/FOSUserBundle/overriding_templates.html
我面临的问题是我通过电子邮件收到的 link 重置密码的邮件将我带回原来的页面,即输入 email/username 的屏幕。电子邮件中生成的 link 应该将我带到一个屏幕,该屏幕有两个文本框供我更改密码,但我从未看到此页面。
我不知道为什么会这样。
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@whosebug.com
sender_name: SenderName
service:
#default implementation, and uses Swiftmailer to send emails.
mailer: fos_user.mailer.default
所以在电子邮件中它会生成一个重置 link 像这样:
http://127.0.0.1:8000/resetting/reset/59wonV9cK7UPR122rhNZQAXMJwoXUz7dt23_O-a4aJ4
(注意:在本地机器上测试)。
当我点击 link 时,它将带我到:
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
问题是 token_ttl
设置为 0 意味着令牌立即过期,因此用户永远无法重设密码。我最初将其设置为 0 以绕过 FOSUserBundle 的 'only reset your password once every 24 hours',但这是不正确的。
删除此行解决了我的问题。