переключился на ssl и придумал токены недействительные - PullRequest
2 голосов
/ 25 сентября 2011

Мы только что переключили наше приложение rails 3 на SSL и позже заметили, что токены восстановления пароля больше не работают в производстве.Он говорит «неверный токен», когда пользователь пытается сбросить свой пароль, используя ссылку по электронной почте.

Я использую rails 3.0.0, разработайте 1.3.4, и наша модель пользователя имеет:

devise :database_authenticatable, :invitable, :registerable,
       :recoverable, :rememberable, :trackable, :validatable

Я не использую ничего подобного ssl_requirement, потому что мы просто сделали ssl повсеместно в приложении.У меня истек срок действия старых токенов, чтобы убедиться, что они не истекли старые токены или что-то в этом роде.Я сбит с толку.

Ответы [ 2 ]

3 голосов
/ 25 сентября 2011

Это была проблема с нашей конфигурацией nginx, и она совершенно не связана с Devise. Но в случае, если кто-то еще окажется в подобном положении, вот что упало. Мы настроили nginx для перенаправления простых http-URL на https. В частности, мы дважды переписывали, когда кто-то переходил с domain.com на www.domain.com на https://www.domain.com,, а код reset_ добавлялся в конец второй раз, чтобы сбросить код_возврата в приложение как? reset_code = 12345? reset_code = 12345.

Итак, мы изменили наш конфиг nginx так:

# rewrite ^ https://$server_name$request_uri permanent;
rewrite ^(.*) https://$host$1 permanent;

а потом просто оптимизация

rewrite ^(.*)$ https://www.domain.com$1 permanent;

и теперь все лучше.

0 голосов
/ 17 октября 2014

Ответ, приведенный выше, является правильным. Но это временное решение, и оно работает только для разработки. Однако проблема возникает, когда вы вручную отправляете токен подтверждения по электронной почте. Вы можете исправить это навсегда. Перейти к среде / производства. и измени эту строку

config.action_mailer.default_url_options = {: хост => 'имя домена',: protocol => "http"}

до

config.action_mailer.default_url_options = {: хост => 'имя домена',: protocol => "https"}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...