Я пытаюсь настроить авторизацию токена JWT для моего приложения rails с входом для входа в систему.Это мой первый раз в этом, но я следил в Интернете, и что-то идет не так с моей стороны.Мне бы понравился другой набор глаз, который может, возможно, увидеть, что я делаю неправильно.
Установка Rails
Я установил в комплекте следующие гемы, чтобы заставить JWT работать:
gem 'bcrypt', '~> 3.1.7'
gem 'rack-cors'
gem 'knock'
Я добавил эту строку кода к config/initializers/knock.rb
согласно https://www.techandstartup.com/tutorials/rails-react-jwt
.
Контроллер моего приложения выглядит следующим образом:
class ApplicationController < ActionController::Base
skip_before_action :verify_authenticity_token
include Knock::Authenticable
end
Файл моего rout.rb выглядит следующим образом:
Rails.application.routes.draw do
get '/quizes' => 'quizzes#quiz'
scope '/quizes' do
resources :quizes
post 'user_token' => 'user_token#create'
end
end
Мой users.rb (файл модели) выглядит так:
class User < ApplicationRecord
has_secure_password
validates :email, :presence => true, :uniqueness => true
end
Это все в соответствии со всем, что было предложено, чтобы начать работу, тогда на переднем крае у меня есть вызов функции, когда есть щелчок для входа, и я просто пытаюсь вернуть токен JWT, чтобы увидеть, еслиэто на самом деле присутствует в это время.
React Set up
Моя функция реагирования на этот вызов:
const login = () => {
const email = 'ben@ga.co'
const password = 'test'
const request = { "auth": { "email": email, "password": password } }
console.log(request)
axios.post("http://localhost:3000/quizes/user_token", request).then((result) => console.log(result.jwt))
}
В настоящее время я получаю ошибку POST http://localhost:3000/quizes/user_token 422 (Unprocessable Entity)
в консоли (я запускаю обасерверы на локальном хосте)
во вкладке сети Chrome он показывает, что это ошибка, исходящая от рельсов со следующими деталями:
def handle_unverified_request
raise ActionController::InvalidAuthenticityToken
end
end
end
Хотя большинство проведенных мной исследований говорят, что это письмоотносится к отсутствию этой строки skip_before_action :verify_authenticity_token
в контроллере приложения, но у меня есть это в.
Также обратите внимание, что в деталях нет ошибки, это было проверено.
Вкладка «Сеть» также показывает, что информация успешно принимается сервером, как показано ниже:
{"auth"=>{"email"=>"ben@ga.co", "password"=>"[FILTERED]"}, "user_token"=>{"user"=>{"email"=>"ben@ga.co", "password"=>"[FILTERED]"}}}
Любая помощь или руководство будут высоко оценены.