2012-01-27 2 views
0

Я обновил аутентификацию в своем приложении, чтобы использовать средство has_secure_password Rails 3.1. В этом процессе я создал страницу, позволяющую пользователям изменять свои пароли. Я тестировал его, и он работает на моей машине разработки, как в среде разработки, так и в производственной среде.Rails 3.2 has_secure_password не работает при развертывании в Heroku

Когда я развернул приложение в Heroku, я пошел попробовать его, и он, похоже, работал, за исключением случаев, когда я вышел из системы и зашел в систему, мой пароль не изменился. Я попытался изменить пароль вручную в консоли, и это работает нормально. Если я попытаюсь ввести другой текст для пароля и подтверждения, он покажет подтверждение, которое он должен использовать, что означает, что пароль правильно отправляется в приложение.

Вот соответствующее изменение моего контроллера: https://github.com/mjm/sis-lunch/commit/930ced467a0e23ad48f4497999183112c5f846b1#diff-2

Есть ли что-то я не хватает? Что может быть не так с ним в производстве на Heroku, что может заставить это тихо провалиться?

ответ

0

Я считаю, что понял. Я развернул приложение в Heroku, а затем выполнил миграцию. Приложение не полностью осознало новый столбец password_digest, но были созданы новые консоли, поэтому они отлично работали. Перезапуск приложения с использованием heroku restart исправил его.

0

Я не уверен, как вы тестируете его на своей машине разработки, поскольку PeopleControllerTest пуст, но поле пароля защищено от массового назначения. Это не должно работать в PeopleController так, как написано. (это хорошо!)

Вам нужно будет явно позвонить Лицо # password = в вашем контроллере.

Соответствующий исходный код Rails для ActiveModel::SecurePassword может показать вам, что именно происходит при использовании has_secure_password.

+0

Уверены ли вы в этом? Код только делает password_digest защищенным, а не паролем, и я смог войти в консоль производства и назначить эти свойства через атрибуты =. –

+0

Ах, нет, ты прав. Я забыл об attr_accessible, когда сравнивал свои заметки раньше. Вернемся к чертежной доске ... – fixlr

+0

Я ответил на свой вопрос, на самом деле, мне просто пришлось перезапустить приложение после выполнения миграции. –

Смежные вопросы