2017-02-21 73 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

非常感謝,這解釋了很多東西:)將使用您的答案尋找解決方案 –