Подтверждение по электронной почте с помощью токена From Rails API + приложение React. Куда перенаправить, если это API? - PullRequest
1 голос
/ 10 февраля 2020

У меня есть два отдельных приложения, API-интерфейс только для Rails и реагирующее приложение. Я пытаюсь аутентифицировать пользователя с помощью ссылки в электронном письме (с токеном).

На данный момент у меня есть:

1 В приложении React пользователь нажимает login with fb кнопка, которая авторизуется с помощью фб. 2 Получив ответ fb, я отправляю запрос в Rails API и сохраняю пользователя в базе данных Rails API. 3 После этого в Rails API я отправляю электронное письмо пользователю, чтобы он мог щелкнуть ссылку с токеном. 4 Пользователь щелкает ссылку в письме, и Rails API получает этот запрос с токеном и активирует пользователя в базе данных. .

Теперь мой вопрос. Поскольку это API-интерфейс, я не могу ответить на странице html, в которой говорится, что теперь вы прошли проверку подлинности, пожалуйста, войдите в систему еще раз или STH.

Что мне делать? 1) Есть ли способ из API, чтобы отправить пользователя на реагирующий URL? Я имею в виду, что пользователь переходит на страницу моего приложения React. 2) Если Rails API создает ссылку с токеном, но на основе домена React, и как только пользователь нажимает ссылку в сообщении электронной почты, каким-то образом go отреагировать приложение, а не на API рельсы, а затем из приложения реагировать отправить запрос на API рельсы с этим токеном? таким образом, при ответе Rails Api я могу перейти с React на другую страницу, потому что я нахожусь в приложении React

Подтверждение сообщения электронной почты выглядит так:

  resources :users, only: [] do
    member do
      get :confirm_email
    end
  end

и действие делает это в какой-то момент, найдя пользователя:

  def email_activate
    self.email_confirmed = true
    self.confirm_token = nil
    save!(:validate => false)
  end

И ссылка в письме выглядит следующим образом:

<%= confirm_email_user_url(@user.confirm_token) %>

1 Ответ

1 голос
/ 10 февраля 2020

У меня нет никаких знаний о рельсах, но вот общий ответ c.

Я бы создал пользовательский интерфейс для вашей страницы активации в вашем приложении реакции. URL-адрес может быть следующим: myreactapp.com/activate?token=<insert_activation_token_here>.

Этот путь будет служить хорошим интерфейсом. Либо во входной части, либо во внутренней части этого пути (в зависимости от того, что удобнее), вы можете обмениваться данными со своим API и передавать токен. URL-адрес может быть следующим: myapi.com/activate?token=<token_from_react>.

На этой странице может отображаться экран успеха или сбоя или что угодно после получения ответа от API.


Редактировать: Это кажется более архитектурным и субъективным вопросом, так что, возможно, существует множество решений.

...