2017-02-21 18 views
0

Я пытаюсь восстановить пароль с помощью FOSUser.Mostly все работает отлично для меня до момента, когда я пытаюсь перейти на страницу сброса пароля.Восстановление пароля с помощью FOS User bundle

У меня на моей электронной почты ссылку, как это:

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-02-21 13:22:18] security.INFO: населили TokenStorage с анонимный токен. [] []

[2017-02-21 13:22:18] doctrine.DEBUG: SELECT t0.username КАК USERNAME_1, t0.username_canonical А.С. username_canonical_2, t0.email А.С. EMAIL_3, t0.email_canonical А.С. email_canonical_4 , t0.enabled А.С. enabled_5, t0.salt AS salt_6, t0.password А.С. password_7, t0.last_login А.С. last_login_8, t0.confirmation_token А.С. confirmation_token_9, t0.password_requested_at А.С. password_requested_at_10, t0.roles А.С. 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-02-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-02-21 13:22:18] security.INFO: населили TokenStorage с анонимный маркер. [] []

[2017-02-21 13:22:18] translation.WARNING: Перевод не найден. {"id": "Telefon", "domain": "messages", "locale": "en"} []

[2017-02-21 13:22:19] request.INFO: Соответствующий маршрут "_wdt". {"route": "_ wdt", "route_parameters": {"_ controller": "web_profiler.controller.профайлер: toolbarAction "," токен ":" 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. I п этот слушатель, метод 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'))); 
    } 
} 

Если вы только что получили письмо, чтобы сбросить пароль и ссылку еще не истек, проверьте конфигурацию вашего fosuser в файле config.xml.

Если у вас есть что-то вроде этого:

fos_user: 
    resetting: 
    token_ttl: 0 

Тогда ваш маркер ТТЛ никогда не будет действительным. В этом случае замените токен ttl на 86400 (например, на 1 день).

+0

большое спасибо, это объясняет много вещей :) Будет искать решение, используя ваш ответ –