2017-02-21 34 views
0

我试图使用FOSUser密码恢复。最起码一切正常工作正常,直到我尝试去重置密码页。密码恢复与FOS用户包

我已经得到了我的电子邮件中的链接是这样的:

http://localhost/yaaholidays/web/app_dev.php/en/resetting/reset/RYPuGNDgSel85v1Kcj3lrIqPRhuYt5inh3VQAOlRPgk

但是当我试着走就可以了,FOS重定向我的

/复位/请求路径

这就是我在我的日志文件中有:

[2017-02-21 13:22:18] request.INFO:匹配的路由 “fos_user_resetting_reset”。 “route”:“fos_user_resetting_reset”,“route_parameters”:{“_ controller”:“FOS \ UserBundle \ Controller \ ResettingController :: resetAction”,“_ locale”:“en”,“token”:“RYPuGNDgSel85v1Kcj3lrIqPRhuYt5inh3VQAOlRPgk”,“_ route “:” fos_user_resetting_reset “},” REQUEST_URI “:” http://localhost/yaaholidays/web/app_dev.php/en/resetting/reset/RYPuGNDgSel85v1Kcj3lrIqPRhuYt5inh3VQAOlRPgk”, “方法”: “GET”} []

[2017年2月21日13时22分18秒] security.INFO:填充TokenStorage与 一个匿名令牌。 [] []

[2017年2月21日十三点22分18秒] doctrine.DEBUG:SELECT t0.username AS USERNAME_1,t0.username_canonical AS username_canonical_2,t0.email AS EMAIL_3,t0.email_canonical AS email_canonical_4 ,t0.enabled AS enabled_5,t0.salt AS salt_6,t0.password AS password_7,t0.last_login AS last_login_8,t0.confirmation_token AS confirmation_token_9, t0.password_requested_at AS password_requested_at_10,t0.roles AS roles_11,t0.id AS id_12,t0.salutation AS salutation_13, t0.first_name AS first_name_14,t0.surname AS surname_15, t0.phone_number AS phone_number_16,t0.profile_picture AS profile_pictur e_17,t0.languages AS languages_18,t0.address AS address_19,t0.agency AS agency_20 FROM fos_user t0 WHERE t0.confirmation_token =? LIMIT 1 “RYPuGNDgSel85v1Kcj3lrIqPRh [...]”] []

[2017年2月21日13时22分18秒] request.INFO:匹配的路由 “fos_user_resetting_request”。 “route”:“fos_user_resetting_request”,“route_parameters”:{“_ controller”:“FOS \ UserBundle \ Controller \ ResettingController :: requestAction”,“_ locale”:“en”,“_ route”:“fos_user_resetting_request”}, REQUEST_URI “:” http://localhost/yaaholidays/web/app_dev.php/en/resetting/request”, “方法”: “GET”} []

[2017年2月21日13点22分十八秒] security.INFO:填充TokenStorage与 匿名令牌。 [] []

[2017-02-21 13:22:18]翻译。警告:找不到翻译。 {“id”:“Telefon”,“domain”:“messages”,“locale”:“en”} []

[2017-02-21 13:22:19] request.INFO: “_wdt”。 {“route”:“_ wdt”,“route_parameters”:{“_ controller”:“web_profiler.controller。profiler:toolbarAction“,”token“:”6f0aa9“,”_ route“:”_ wdt“,”_ locale“:”en“},”request_uri“:”http://localhost/yaaholidays/web/app_dev.php/_wdt/6f0aa9“,”method“:”GET“} []

有谁知道为什么FOS重定向我的密码恢复请求,而不是设置新密码页面的网页上?

回答

3

通过阅读你的日志,似乎密码重置请求已过期。您的链接失效?

在控制器FOS \ UserBundle \ Controller \ ResettingController中,事件RESETTING_RESET_INITIALIZE在从令牌获取用户之后添加,然后侦听器ResettingListener被调用。 n这个监听器,方法onResettingResetInitialize(其管理RESETTING_RESET_INITIALIZE事件)检查密码请求已过期并重定向路由fos_user_resetting_request如果是:

/** 
* @param GetResponseUserEvent $event 
*/ 
public function onResettingResetInitialize(GetResponseUserEvent $event) 
{ 
    if (!$event->getUser()->isPasswordRequestNonExpired($this->tokenTtl)) { 
     $event->setResponse(new RedirectResponse($this->router->generate('fos_user_resetting_request'))); 
    } 
} 

如果您刚刚收到的电子邮件重置您的密码和链接尚未过期,请在config.xml中检查您的fosuser配置。

如果你有这样的事情:

fos_user: 
    resetting: 
    token_ttl: 0 

那么你的令牌上的TTL将永远是有效的。在这种情况下,例如,将令牌ttl更改为86400(1天)。

+0

非常感谢,这解释了很多东西:)将使用您的答案寻找解决方案 –