嗨,我试图将devise与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)
如果您需要更多信息,请与我们联系