Как интегрировать аутентификацию и авторизацию пользователей Rails с внешним приложением? - PullRequest
0 голосов
/ 15 февраля 2020

Может ли кто-нибудь указать хороший ресурс о том, как реализовать аутентификацию / авторизацию с использованием Rails API с React?

Я потратил неделю или две, пытаясь выяснить, как объединить два и у меня есть Не могу, это сводит меня с ума.

Есть люди, которые говорят, что HTTP cook ie только аутентификация лучше, тогда как некоторые люди говорят, что аутентификация токенов лучше. Затем приходит разрешение. Тогда подключение. В одночасье происходит так много всего, что я не могу понять, какой метод является лучшим.

Прямо сейчас я пытаюсь использовать devise и pundit для аутентификации и авторизации пользователей, но есть и такие гемы, как simple-token-authentication, Knock, et c ..

Пожалуйста, помогите меня.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Итак, после возни с топором ios и JWT, у меня теперь есть функциональная страница входа / регистрации!

https://medium.com/@taiseiyamadashindosu / 2020-аутентификация-авторизация-ваша-реакция -app-with-rails-api-1-2-5f7f23380e1a

Я написал среднюю статью о том, как с этим справиться.

0 голосов
/ 15 февраля 2020

для серверной части rails вы можете использовать bcrypt / devise для аутентификации пользователя, если он правильный, и затем использовать JsonWebToken для генерации токена и возврата его пользователю, а вот пример для кодирования с использованием JsonWebToken

Gemfile

gem 'devise'
gem 'jwt', '~> 2.2'

controller / api / tokens_Controller.rb

class TokensController < ApplicationController
  def create
    @user = User.find_by_email(user_params[:email])
    if @user && @user.valid_password?(user_params[:password])
      render json: {
        token: JsonWebToken.encode(user_id: @user.id),
        email: @user.email
      }
    else
      head :unauthorized
    end
  end

  private

  def user_params
    params.require(:user).permit(:email, :password)
  end
end

и вот хорошая книга для чтения, если вы хотите узнать больше, API на рельсах 6 от Alexandre ,

в React part вы можете использовать Ax ios и, если пользователь успешно прошел аутентификацию, затем получить токен, вы можете установить, чтобы токен действовал столько, сколько вам нужно (1 день , 1 неделя, 2 месяца и т. Д. c), каждый раз, когда пользователь запрашивает страницу / данные, требующие аутентификации, пользователь должен отправить токен (вы можете поместить его в заголовок http). Вот пример из реагирующей части

import axios from 'axios';

export default axios.create({
  baseURL: 'http://your_api_server/api',
  headers: {
    Authorization: {put your token here}
  }
})
...