Я хочу аутентифицировать пользователя, чтобы получить доступ к Swagger API.
У меня есть модель Devise for User.
У меня есть конечная точка входа в систему POST из официальной документации в моем swagger_helper:
paths: {
"/api/v1/sign_in": {
"post": {
"tags": [
'sign_in'
],
"description": "Allow couriers to log in, and to receive a Token\n",
"parameters": [
{
"in": 'body',
"name": 'body',
"description": 'The email/password',
"required": true,
"schema": {
"$ref": '#/definitions/Login'
}
}
],
"responses": {
"200": {
"description": 'Login Success',
"schema": {
"$ref": '#/definitions/Token'
}
}
, что позволяет мне передать requestBody с учетными данными для входа через Swagger API:
{
"email": "courier_default@example.com",
"password": "password"
}
Я хочу получить токен в качестве ответа для доступа к API через кнопку «Авторизовать».
Мой вопрос: как обработать requestBody в моем приложении, чтобы получить токен в ответ?
Я попытался использовать гем devise_token_auth, а затем гем devise-jwt.
Но после них обоих, когда Я запускаю в своем UsersController:
before_action :authenticate_user!
сервер возвращает мне ошибку в ответ:
401 unauthorized
В моем файле routes.rb есть следующая строка:
post 'sign_in' => 'users#sign_in'
которые выполняют:
class UsersController < ApplicationController
before_action :authenticate_user!
def sign_in
if user_signed_in?
user = User.find_by_uid(params[:uid])
current_user = user
render json: current_user.create_new_auth_token, status: 200
else
render json: { message: 'Undefined user' }, status: 400
end
end
end
Я готов переопределить Authenticate_user! при необходимости. Но я не знаю, как получить requestBody в моем контроллере для его обработки.
С другой стороны, я готов использовать Devise + JWT или Devise + devise_token_auth et c, но после некоторых руководств я получил Ошибка 401.
Итак, я готов получить направление движения.