0

嗨,我正在尝试将设计与 devise_token_auth 一起使用。

最初我的应用程序是仅 API 应用程序。因此,我们使用 --api 标志生成了应用程序。但是在我们需要为我们的管理功能添加 Rails 视图之后。截至目前,所有控制器都继承自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)

如果您需要更多信息,请告诉我

4

0 回答 0