для серверной части 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}
}
})