ruby-on-rails 1个错误禁止保存此用户:确认令牌无效

jei2mxaa  于 2023-10-21  发布在  Ruby
关注(0)|答案(1)|浏览(141)

我在localhost:3000上注册了确认邮件。在我的发展.rb我这样添加

config.action_mailer.default_url_options = {:host => 'localhost:3000'}
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => 'smtp.gmail.com',
    :port    => '587',
    :authentication => :plain,
    :user_name  => '[email protected]',
    :password       => 'mypassword',
    :domain  => 'localhost:3000',
    :enable_starttls_auto => true
}

当我注册已经我打开我的电子邮件,然后在收件箱显示消息您可以通过下面的链接确认您的帐户电子邮件:确认我的帐户我点击此链接.它重定向到localhost:3000/users/sign_in,我可以成功登录。但是当我再次点击这个链接(确认我的帐户)在我的收件箱。它显示错误如下:
地址:http://localhost:3000/users/confirmation?confirmation_token=dWUeHVP_N7VzsVwvkNW5
消息错误:

Resend confirmation instructions
1 error prohibited this user from being saved:
Confirmation token is invalid

在我的电子邮件收件箱当我点击链接“确认我的帐户”再次我想它重定向到localhost:3000/users/sign_in.我如何重定向到localhost:3000/users/sign_in当点击链接“确认我的帐户“再次?请帮帮我!

unhi4e5o

unhi4e5o1#

在confirmation_token变为nil并导致此错误后,您只能使用一次确认链接。如果你想重定向某人到登录URL,如果确认已经完成。然后你需要重写设计确认控制器。

def show
  self.resource = resource_class.confirm_by_token(params[:confirmation_token])
  if resource.errors.empty?
    set_flash_message(:notice, :confirmed) if is_flashing_format?
    sign_in(resource_name, resource)
    respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
  else
    redirect_to new_user_session_path
    #respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render :new }
  end
end

相关问题