Кажется, я не могу отправить запрос на конечную точку моего контроллера; однако я мог бы создать пользователя и get
всех пользователей, используя devise_token_auth.
Следуя их документации, я могу CRUD пользователя. Если я создам другую конечную точку в пользовательском контроллере с маршрутом post
, я получаю:
Цепочка фильтров остановлена как :authenticate_user! визуализировано или перенаправлено
Но get
работает. Мой application.rb
:
config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*',
:headers => :any,
:expose => ['access-token', 'expiry', 'token-type', 'uid', 'client'],
:methods => [:get, :post, :delete, :patch, :options]
end
end
Пользовательский CRUD работает только с конечными точками их путей, но не с моими.
# controllers/api/v1/api_controller.rb
module Api::V1
class ApiController < ApplicationController
before_action :authenticate_user!
respond_to :json
end
end
# controllers/api/v1/users_controller.rb
module Api::V1
class UsersController < ApiController
def create
render json: 'created'
end
end
end
# routes
scope module: 'api' do
namespace :v1 do
post '/users/test', to: 'users#create' # not authenticated!
get '/users/test', to: 'users#create' # authenticated.. works
# resources :users, only: [:index, :show] # no issues here
end
end
Почтальон может post
, когда я добавил заголовок, но не из браузера. Не уверен, что проблема с CORS, но я думаю, что нет. Я попробовал новый API Rails 5 и то же самое. Моя функция js выглядит так:
axios.post(`${window.apiUrl}/v1/users/test`, { headers: headerData, project: { title: 'help' } })