Как перенаправить на страницу входа в систему / или сделать успешной регистрацию пользователя после подтверждения электронной почты в авторизации токена devise - PullRequest
0 голосов
/ 10 апреля 2020

Я использую авторизацию токена devise в интерфейсе React, и теперь я делаю подтверждение пользователя по электронной почте. Электронная почта отправляется, но каким-то образом она генерирует неправильный 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

Мое приложение / views / devise / mailer / translation_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 я перезаписал файлфирмо Подтверждения_контроллера.

# 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

В маршрутах. rb

mount_devise_token_auth_for 'User', at: 'auth', controllers: { confirmations: 'users/confirmations' }

1 Ответ

0 голосов
/ 10 апреля 2020

Во-первых, помощнику URL, который вы используете в электронном письме, не нужно получать @resource - вот почему он генерирует URL с .4. Это должно быть

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

Во-вторых, согласно этому руководству, вы можете перенаправить пользователя после подтверждения, как вы уже пытались. https://github.com/heartcombo/devise/wiki/How-To: - Добавить-: подтвержденные пользователям # 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

Так что после входа в систему go не нужно снова открывать session_new.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...