【发布时间】:2010-10-11 13:09:45
【问题描述】:
更新:此问题已得到解答(见下文)。我会保留它,以防将来有人可以受益。
我正在尝试使用 Rails 3 在 Authlogic 上获得电子邮件确认。http://github.com/matthooks/authlogic-activation-tutorial
身份验证正在运行,并且正在生成和发送激活电子邮件,每封电子邮件都包含一个易腐标记,但易腐标记不正确,因为它们与保存在用户的记录。
按照电子邮件中的令牌,我得到:ActivationsController#create 中的异常
注意:当我从表中手动将正确的令牌输入到 URL 中时,它会按预期进行验证和重定向。因此,唯一的问题是生成的易腐令牌与保存的令牌不同。
# UserMailer
class UserMailer < ActionMailer::Base
default :from => "notifications@myapp.com"
def registration_confirmation(user)
@user = user
mail(:to => "#{user.login} <#{user.email}>", :subject => "Registered")
end
def activation_instructions(user)
subject "Activate Your Account"
from "noreply@myapp.com"
recipients user.email
sent_on Time.now
body :account_activation_url => activate_url(user.perishable_token)
end
def welcome(user)
subject "Welcome to the site!"
from "noreply@myapp.com"
recipients user.email
sent_on Time.now
body :root_url => root_url
end
end
# E-mail itself:
To activate, click here: <%= @account_activation_url %>
错误发生在第 5 行,系统尝试通过令牌查找用户但失败:
class ActivationsController < ApplicationController
before_filter :require_no_user
def create
@user = User.find_by_perishable_token(params[:activation_code], 1.week) || (raise Exception)
raise Exception if @user.active?
if @user.activate!
flash[:notice] = "Your account has been activated!"
UserSession.create(@user, false) # Log user in manually
@user.deliver_welcome!
redirect_to home_url
else
render :controller => "welcome", :action => "linklogin"
end
end
end
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 authlogic