2

Я добавил новую миграцию в таблицу в своем приложении, и я переношу. Поскольку у него были ошибки, я упал и перенес его. Когда я подписался на пользователя и попытался подтвердить его с помощью электронной почты (разработать, подтвердить), он просто не подтвердит. Он указывает недействительный токен подтверждения. Я попытался перезапустить сервер. Насколько я знаю, все это возможно. Я использую Rails 3.2.9 и Ruby 1.9.3. Версия для разработки - 3.1.0. Разработчик также включен в другие драгоценные камни, которые я добавил как rails-messaging и active-admin.недействительный маркер подтверждения

Started POST "https://stackoverflow.com/users/confirmation" for 127.0.0.1 at 2013-09-16 19:42:47 +0530 
Processing by Devise::ConfirmationsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"4lMxdlsMqRCJB1doxt/hTCQhUPvAoGPiSbr9wQA/ZAQ=", "user"=>{"email"=>"[email protected]"}, "commit"=>"Resend confirmation instructions"} 

User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."unconfirmed_email" = '[email protected]' LIMIT 1 

User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."confirmation_token" = 'cc47150f51ec476aa40ea1d546e27c0dafc37ffc8bb82272a9f2377c863daed1' LIMIT 1 
    (0.1ms) begin transaction 
    (0.3ms) UPDATE "users" SET "confirmation_token"='cc47150f51ec476aa40ea1d546e27c0dafc37ffc8bb82272a9f2377c863daed1', "confirmation_sent_at" = '2013-09-16 14:12:47.174313', "updated_at" = '2013-09-16 14:12:47.175384' WHERE "users"."id" = 1 
    (175.3ms) commit transaction 
    Rendered devise/mailer/confirmation_instructions.html.erb (0.6ms) 

Sent mail to [email protected] (5099ms) 
Date: Mon, 16 Sep 2013 19:42:47 +0530 
From: [email protected] 
Reply-To: [email protected] 
To: [email protected] 
Message-ID: <[email protected]> 
Subject: Confirmation instructions 
Mime-Version: 1.0 
Content-Type: text/html; 
charset=UTF-8 
Content-Transfer-Encoding: 7bit 

<p>Welcome [email protected]!</p> 

<p>You can confirm your account email through the link below:</p> 

<p><a href="http://localhost:3000/users/confirmation?confirmation_token=cc47150f51ec476aa40ea1d546e27c0dafc37ffc8bb82272a9f2377c863daed1">Confirm my account</a></p> 

Redirected to http://localhost:3000/users/sign_in 
Completed 302 Found in 5387ms (ActiveRecord: 0.0ms) 

ответ

1

Это, вероятно, связано с обновлениями безопасности в Devise 3.1. Токен, который отправляется пользователю, не совпадает с тем, который находится в базе данных. Вы можете отключить эту функцию, в том числе это в вашем DEViSE инициализаторе:

config.allow_insecure_token_lookup = true 

Но было бы лучше просто удалить пользователя и создать новую с новой символической системы.

Смотреть это сообщение в блоге об изменениях безопасности в Devise 3.1: http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/ Вы ищете раздел под названием «Магазин переваривается лексемы в базе данных»

3

Going добавить свой опыт здесь, в случае, он может помочь кому-то остальное. Обновление до устройства 3.1, как BillyMFH, изменило способ создания токенов. Сообщение в блоге содержит много информации, и решение проблемы в этом ответе является временным.

Если config.allow_insecure_token_lookup установлено в ложное (и после того, как этот параметр устарел), исправление в моем случае состояло в том, чтобы обновлять просмотры электронной почты, которые Devise использует для отправки ссылок, содержащих токены.

Старый DEViSE просмотров электронной почты содержат строки, как это:

<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p> 

Это использует старый маркер, хранящийся в БД. Теперь вы просто сделать это:

<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @token) %></p> 

Просто замените старый маркер из ресурса с новым экземпляром переменной @token

Ссылка в блоге на это изменение подсвечивается здесь: Devise email view token change

1

Только ты необходимо внести следующие изменения во время обновления программы:

В следующей строке в файле app/views/devise/mailer/confirm_instructions.html.erb

<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p> 

с новой линии, -

<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token) %></p> 

Это, безусловно, решить проблему, он просто работает для меня.

Cheers!

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