我想使用具有两个名称空间的Devise:API名称空间和默认名称空间,
但是当用户尝试登录时,这两者似乎存在冲突.
意思是,任何引用Devise的命名空间最终都会出现
是最后的重定向地方.例如:如果我尝试创建一个新会话
在默认命名空间下,它将在该用户会话路径上失败,
然后尝试在API / v1会话路径上创建会话.
但是当用户尝试登录时,这两者似乎存在冲突.
意思是,任何引用Devise的命名空间最终都会出现
是最后的重定向地方.例如:如果我尝试创建一个新会话
在默认命名空间下,它将在该用户会话路径上失败,
然后尝试在API / v1会话路径上创建会话.
如何让两者独立行动?
它们都引用了User对象. user_sessions控制器
默认名称空间是’user_sessions’. user_sessions
API / V1命名空间的控制器是’/ api / v1 / user_sessions’
---- ROUTES.RB ------- MySite::Application.routes.draw do namespace :api do namespace :v1 do devise_for :users,:controllers => { :sessions => "api/v1/ user_sessions",:registrations=>"users" } ...... end end devise_for :users,:controllers => { :sessions =>"user_sessions",:registrations=>"users" } do post 'users/sign_in' => 'user_sessions#create',:as => :user_session get 'users/sign_in' => 'user_sessions#new',:as => :new_user_session get 'users/sign_up' => 'user_sessions#new',:as => :new_user_session match 'users/sign_out' => 'user_sessions#destroy',:as => :destroy_user_session <.....> end
—– DEFAULT NAMESPACE USER_SESSIONS_CONTROLLER —–
class UserSessionsController < Devise::SessionsController .... end ----
API NAMESPACE USER_SESSIONS_CONTROLLER —-(这是我在下面标注的自定义Devise基本控制器)
class Api::V1::UserSessionsController < Api::V1::DeviseBaseController ... end
—- API NAMESPACE CUSTOM DEVISE BASE控制器—-
class Api::V1::DeviseBaseController < Devise::SessionsController respond_to :json end