如何在设计令牌验证中确认电子邮件后如何重定向到登录页面/或使用户成功登录

问题描述 投票:0回答:1

我正在对React前端使用devise令牌auth,现在我通过电子邮件使用户可确认。正在发送电子邮件,但以某种方式会生成错误的URL。

生成的URL是。

http://localhost:3001/auth/confirmation.4?confirmation_token=AoWH2yYxuHHnBzJRF746

我的路线。

new_user_confirmation GET      /auth/confirmation/new(.:format)                                                         users/confirmations#new
                    user_confirmation GET      /auth/confirmation(.:format)                                                             users/confirmations#show
                                      POST     /auth/confirmation(.:format)                                                             users/confirmations#create

我的应用程序/视图/设计/邮件程序/confirmation_instructions.html.erb

<p>Welcome <%= @email %>!</p>

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

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

单击确认我的帐户后,它成功将我带到我的应用程序,但URL错误。如果达到以下条件之一,我将感到高兴。

  1. 确认后用户将自动登录。
  2. 确认帐户后进入登录页面,然后他给您凭据并登录。

对于1,我已经覆盖了confirms_controller.rb之类。

# frozen_string_literal: true

class Users::ConfirmationsController < Devise::ConfirmationsController
  # The path used after confirmation.
   def after_confirmation_path_for(resource_name, resource)
     sign_in(resource) # In case you want to sign in the user
     root_path
   end
end

在routes.rb中

mount_devise_token_auth_for 'User', at: 'auth', controllers: { confirmations: 'users/confirmations' }
ruby-on-rails devise devise-confirmable devise-token-auth
1个回答
0
投票

首先,您在电子邮件中使用的URL帮助程序不需要接收@resource-这就是为什么它使用.4生成URL的原因。它应该是

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

第二,根据本教程,您可以在确认后重定向用户,就像您已经尝试过的那样。https://github.com/heartcombo/devise/wiki/How-To:-Add-:confirmable-to-Users#redirecting-user

仅在登录用户后在您的应用中提供路径

def after_confirmation_path_for(resource_name, resource)
  sign_in(resource) # In case you want to sign in the user
  your_new_after_confirmation_path
end

因此登录后无需再次进入session_new。

© www.soinside.com 2019 - 2024. All rights reserved.