Как обрабатывать requestBody в Swagger Rails, чтобы получить токен для аутентификации - PullRequest
0 голосов
/ 28 мая 2020

Я хочу аутентифицировать пользователя, чтобы получить доступ к 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.

Итак, я готов получить направление движения.

...