Rails devise с devise_token_auth не показывает форму входа - PullRequest
0 голосов
/ 26 апреля 2018

Привет, я пытаюсь использовать devise вместе с devise_token_auth.

Изначально мое приложение было только API-приложением. Поэтому мы сгенерировали приложение, используя флаг --api. Но после этого нам нужно добавить rails views для нашей админки. На данный момент все контроллеры наследуются от ApplicationController, который наследуется от ActionController::API. Поэтому я создал новый контроллер с именем AppController и унаследовал его от ActinController::Base. Я начал наследовать от AppController для всех своих недавно созданных контроллеров. Все мои недавно созданные контроллеры находятся внутри моего admins пространства имен.

Это мой routes.rb:

require 'sidekiq/web'

Rails.application.routes.draw do
  mount Sidekiq::Web => '/sidekiq'

  devise_for :users, as: :admins, controllers: { sessions: 'admins/sessions' }

  mount_devise_token_auth_for 'User', at: 'auth',
    controllers: {
      sessions: 'api/v1/sessions',
      passwords: 'api/v1/passwords'
   }
  namespace :admins do
    # my admin routes
  end

  ###...

end

Здесь у меня есть маршруты для запросов, поступающих от API (обработанных devise_token_auth), и для обычных запросов я добавил devise_for: users, как:: admins, как показано выше.

Мой admins/sessions_controller.rb:

  class Admins::SessionsController < ::Devise::SessionsController
    def new
      super
    end

    def create
      super
    end
  end

Я сгенерировал представления устройства и добавил в папку admins внутри views

Мой AppController:

    class AppController < ActionController::Base
      before_action :authenticate_user!
    end

Здесь возникает проблема: всякий раз, когда я пытаюсь получить доступ к любой странице, он должен перенаправлять меня на страницу входа. Но это только показывает мне следующую ошибку

You need to sign in or sign up before continuing.

Вся страница пуста, и на ней нет знака для входа. Я создал страницу sessions/new.html.haml и поместил ее в папку admins в моих представлениях.

server log

Started GET "/admins/locations/4/bookings/pending" for 172.18.0.1 at 2018-04-26 09:06:34 +0000
Processing by Admins::BookingsController#pending as HTML
  Parameters: {"id"=>"4"}
Completed 401 Unauthorized in 0ms (ActiveRecord: 0.0ms)

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация

...