Путь конфликтует при наличии двух определений devise_for в маршрутах - PullRequest
0 голосов
/ 12 мая 2019

Приложение My Rails 5 имеет администратора, который использует обычную процедуру входа в систему.Маршруты ограничены /admin

  scope '/admin' do
    devise_for :users, singular: :admin_user
  end

Кроме того, приложение предоставляет API для мобильных устройств.API использует токен JWT для аутентификации.Для этого используется гем devise-jwt .

Я определил метод devise_for в api / v1 следующим образом:

scope :api, module: :api do
   scope :v1, module: :v1 do
      devise_for :api_users,
                 class_name: 'User',
                 resource_name: 'user',
                 name: 'user',
                 path: '',
                 path_names: {
                     sign_in: 'login',
                     sign_out: 'logout',
                     registration: 'signup'
                 },
                 controllers: {
                     sessions: 'api/v1/sessions',
                     registrations: 'api/v1/registrations'
                 }
    end
  end

Через вызов JSON api/v1/login Я могу войти.К сожалению, вероятно из-за несоответствия resource_name токен JWT не добавляется в качестве заголовка.

Когда я изменяю параметр ресурсов devise_for с :api_users на :users и комментирую /admin scope devise_for, он работает.

Я надеюсь, что кто-то может найти решениеЭта проблема.Уже несколько дней это вызывает у меня проблемы, и я думаю, что попробовал все возможные сопоставления и комбинации параметров namespace / scope / module в файле маршрутов.

...