Устройство Rails reset_password_token продолжает помечаться как просроченное

Я пытаюсь использовать reset_password_token devise, чтобы заставить пользователей менять свой пароль при первом входе в систему, используя то, что я прочитал здесь: Rails Devise: установить токен сброса пароля и перенаправить пользователя

Я дохожу до загрузки страницы с надписью «установите свой пароль», но каждый раз, когда я нажимаю «Отправить», появляется уведомление о том, что срок действия reset_password_token истек, и запрашивается новый. Я попытался установить reset_password_token в переменную вместо доступа через пользовательский объект (@user.reset_password_token), на случай, если истечение срока действия рассчитывается, если к этому токену был осуществлен доступ, но он все еще говорит, что срок его действия истек, когда я пытаюсь установить свой первоначальный пароль. Я не уверен, как рассчитывается срок действия, у кого-нибудь есть идеи?


person jshou    schedule 28.07.2011    source источник


Ответы (1)


Нашел ответ!

Когда генерируется reset_password_token, @user.reset_password_sent_at необходимо установить на Time.now, иначе, когда devise запустит @user.reset_password_period_valid?, чтобы узнать, действителен ли токен сброса, он получит nil и предположит, что срок действия токена истек.

person jshou    schedule 28.07.2011