【发布时间】:2014-02-05 02:39:49
【问题描述】:
我有一个使用 :confirmable 的带有 Devise 3.2.2 的 Rails 4 应用程序,但在发送无效确认令牌时遇到了问题,但只是第一次。重新发送确认令牌后,该链接有效。
相关路线:
devise_for :users, skip: [:sessions, :passwords, :confirmations, :unlocks, :registrations, :invitations]
as :user do
...
# joining
get '/register' => 'devise/registrations#new', as: 'new_user_registration'
post '/register' => 'devise/registrations#create', as: 'user_registration'
...
end
...以及有问题的邮件模板:
<p>Welcome <%= @email %>!</p>
<p>You can confirm your account email through the link below:</p>
<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token) %></p>
据我所知,一切都是相当标准的票价,而且它只会在最初创建而不是重新发送时失败,这一事实相当令人困惑。
--更新--
单击该链接时,我的开发日志中会显示以下内容:
Started GET "/account/confirm?confirmation_token=3bQP-EvYJPv74s9AMz63" for 127.0.0.1 at 2014-02-07 12:26:10 -0500
Processing by Users::ConfirmationsController#show as HTML
Parameters: {"confirmation_token"=>"3bQP-EvYJPv74s9AMz63"}
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."confirmation_token" = 'e191b48746f15014beb32073f08de3c7aa13a2282216f089fa71d083901b3dca' ORDER BY "users"."id" ASC LIMIT 1
Rendered devise/shared/_links.slim (1.2ms)
Rendered devise/confirmations/new.html.slim within layouts/devise (7.0ms)
Rendered layouts/_jquery.slim (1.0ms)
Completed 200 OK in 32ms (Views: 23.4ms | ActiveRecord: 0.4ms)
引用的控制器是:
class Users::ConfirmationsController < Devise::ConfirmationsController
protected
def after_confirmation_path_for(resource_name, resource)
if signed_in?
signed_in_root_path(resource)
else
new_session_path(resource_name, email: resource.email)
end
end
end
-- 更新 2--
以下是整个注册过程的日志要点: https://gist.github.com/jbender/bbe079c2dd3fa2d1e664
【问题讨论】:
-
根据开发日志,状态为
Completed 200 OK,因此我假设此日志用于来自Users::ConfirmationsController#show操作的重新发送确认。能否分享一下第一次生成的确认邮件token链接内容以及点击后的日志,以便我们分析数据。 -
不,这是第一次尝试的日志(失败)。发布的日志消息会导致显示“无效令牌”错误,即使它是 200 状态。
标签: ruby-on-rails devise ruby-on-rails-4 devise-confirmable