Нажатие на «Цепь фильтра не авторизована» во время запроса POST, в React / Ruby on Rails - PullRequest
0 голосов
/ 19 декабря 2018

Первый вопрос о переполнении стека, поэтому я заранее извиняюсь за то, что забыл вещи.

Проект:

  • Функция объявления, которая позволяет администраторам / модераторам публиковать объявления на сайте.

Используемые инструменты / языки:

  • Реакция / Ruby on Rails, Разработка (для входа в систему)

История:

  • Функция объявления была UP и RUNNING;пока я не добавил поле «Имя пользователя» в свою таблицу объявлений.Я правильно обновил миграцию / схему и внес изменения в контроллер, чтобы новое поле, а также форма React могли передать новое поле в объект объявлений.

Ошибка:

  • После обновления файлов миграции / схемы новыми полями, обновления анонса_контроллера для разрешения нового поля и обновления формы React для захвата и POST нового объекта «Объявление» через запрос POST AXIOS, я получаюследующая ошибка: «Цепь фильтра остановлена ​​как: authenticate_user! предоставлено или перенаправлено» 401 не авторизован и т. д.

Вещи, которые я уже пробовал:

  • Iпроверил все данные, которые ДОЛЖНЫ быть в объекте объявления, непосредственно перед тем, как их протолкнуть через запрос POST, именно там, где и должно быть.(См. Изображения ниже)

  • Я попытался использовать Binding.Pry, который работает как «Отладчик» Javascript, за исключением Ruby, но мой binding.pry НЕ ОСТАНАВЛИВАЛСЯ В ЛЮБОМ МЕСТЕ в контроллере объявлений, и это заставляет меня поверить, что POST-запрос даже не передается на announcements_controller до появления ошибки, описанной ниже.

  • Я убедился, что таблица Announcements является такой, какой она должна быть.

  • Я установил новое поле, чтобы оно было разрешено в объявлении_контроллера

Примеры кода / изображения:

handleSubmit POST-запрос

  handleSubmit = (announcement) => { axios.post(`/api/announcements`, announcement)}

Содержимое "объявления" ПРОСТО перед передачей в handleSubmit ()

Цепочка фильтра Остановлена ​​как: authenticate_user!обработано или перенаправлено: сообщение об ошибке ПОСЛЕ запроса POST

Схема объявлений / база данных / таблица

ActiveRecord :: Schema.define (версия: 2018_12_19_224825) do

    # These are extensions that must be enabled in order to support this 
  database
    enable_extension "plpgsql"

    create_table "accounts", force: :cascade do |t|
      t.string "account_name"
      t.bigint "users_id"
      t.datetime "created_at", null: false
      t.datetime "updated_at", null: false
      t.index ["users_id"], name: "index_accounts_on_users_id"
    end

    create_table "announcements", force: :cascade do |t|
      t.string "body"
      t.bigint "user_id"
      t.datetime "created_at", null: false
      t.datetime "updated_at", null: false
      t.index ["user_id"], name: "index_announcements_on_user_id"
    end

    create_table "games", force: :cascade do |t|
      t.string "game_name"
      t.bigint "accounts_id"
      t.datetime "created_at", null: false
      t.datetime "updated_at", null: false
      t.index ["accounts_id"], name: "index_games_on_accounts_id"
    end

    create_table "team_has_tournaments", force: :cascade do |t|
      t.bigint "tournament_id"
      t.bigint "team_id"
      t.datetime "created_at", null: false
      t.datetime "updated_at", null: false
      t.index ["team_id"], name: "index_team_has_tournaments_on_team_id"
      t.index ["tournament_id"], name: "index_team_has_tournaments_on_tournament_id"
    end

    create_table "teams", force: :cascade do |t|
      t.string "team_name"
      t.datetime "created_at", null: false
      t.datetime "updated_at", null: false
    end

    create_table "tournaments", force: :cascade do |t|
      t.text "tournament_description"
      t.datetime "created_at", null: false
      t.datetime "updated_at", null: false
      t.string "tournament_name"
    end

    create_table "user_has_teams", force: :cascade do |t|
      t.bigint "user_id"
      t.bigint "team_id"
      t.datetime "created_at", null: false
      t.datetime "updated_at", null: false
      t.index ["team_id"], name: "index_user_has_teams_on_team_id"
      t.index ["user_id"], name: "index_user_has_teams_on_user_id"
    end

    create_table "users", force: :cascade do |t|
      t.string "provider", default: "email", null: false
      t.string "uid", default: "", null: false
      t.string "encrypted_password", default: "", null: false
      t.string "reset_password_token"
      t.datetime "reset_password_sent_at"
      t.boolean "allow_password_change", default: false
      t.datetime "remember_created_at"
      t.integer "sign_in_count", default: 0, null: false
      t.datetime "current_sign_in_at"
      t.datetime "last_sign_in_at"
      t.string "current_sign_in_ip"
      t.string "last_sign_in_ip"
      t.string "confirmation_token"
      t.datetime "confirmed_at"
      t.datetime "confirmation_sent_at"
      t.string "unconfirmed_email"
      t.string "firstName"
      t.string "lastName"
      t.string "username"
      t.string "image"
      t.string "email"
      t.json "tokens"
      t.datetime "created_at", null: false
      t.datetime "updated_at", null: false
      t.integer "level", default: 1
      t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
      t.index ["email"], name: "index_users_on_email", unique: true
      t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
      t.index ["uid", "provider"], name: "index_users_on_uid_and_provider", unique: true
    end

    add_foreign_key "accounts", "users", column: "users_id"
    add_foreign_key "announcements", "users"
    add_foreign_key "games", "accounts", column: "accounts_id"
    add_foreign_key "team_has_tournaments", "teams"
    add_foreign_key "team_has_tournaments", "tournaments"
    add_foreign_key "user_has_teams", "teams"
    add_foreign_key "user_has_teams", "users"
  end

Контроллер объявлений, который должен обрабатывать POST-запрос (1)

Контроллер объявлений, который должен обрабатывать POST-запрос (2)

    class Api::AnnouncementsController < ApplicationController
    before_action :set_announcement, only: [:show, :update, :destroy]

    def index
      render json: Announcement.all.order("created_at DESC")
    end

    def show
      render json: @announcement
    end


    def new
      @announcement = Announcement.new
    end

    def edit
    end

    def create
      announcement = Announcement.new(announcement_params)

      if announcement.save
        render json: build_announcement(announcement)
      else
        render json: announcement.errors, status: 422
      end
    end

    def update
      if @announcement.update(announcement_params)
        render json: @announcement
      else
        render json: @announcement.errors, status: 422
      end
    end

    def destroy
      @announcement.destroy
    end

    private

    def build_announcement(announcement)
      {
        id: announcement.id,
        body: announcement.body,
        username: announcement.username,
        user_id: announcement.user_id,
        created_at: announcement.created_at,
        updated_at: announcement.updated_at,
      }
    end

    def set_announcement
      @announcement = Announcement.find(params[:id])
    end

    def announcement_params
      params.require(:announcement).permit(:body, :username, :user_id)
    end
    end

1 Ответ

0 голосов
/ 20 декабря 2018

Я отмечаю, что ваш вывод на консоль включает в себя:

User Load (50.0ms) SELECT "users".* FROM "users" WHERE "users"."uid" = $1 LIMIT $2 [["uid", "admin@admin.com"], ["LIMIT", 1]]

(несмотря на любые ошибки ввода с моей стороны.)

Похоже, вы пытаетесь найти пользователя с uid из admin@admin.com.В ваших комментариях (я думаю, сейчас удалено) вы сказали, что у вас нет такого пользователя.Если это так, то я предполагаю, что именно это и вызывает у вас:

Filter chain halted as :authenticate_user! rendered or redirected

Думаю, я бы начал с исследования этого бита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...