Я хочу использовать Devise с двумя пространствами имен :пространством имен API и пространством имен по умолчанию, но они кажутся конфликтующими, когда пользователь пытается войти в систему. Это означает, что любое пространство имен, которое сначала ссылается на Devise, заканчивается являющийся конечным местом перенаправления. Пример :Если я попытаюсь создать новый сеанс в пространстве имен по умолчанию он не будет работать на этом пути сеанса пользователя, а затем попытайтесь создать сеанс по пути сеансов API/v1.
Как заставить их действовать независимо?
Они оба ссылаются на объект User. Контроллер сеансов пользователя _для пространства имен по умолчанию «пользовательские сеансы _». Сеансы пользователя _контроллер для пространства имен API/V1: «/api/v1/user _сеансы»
---- 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
-----ПРОСТРАНСТВО ИМЕН ПО УМОЛЧАНИЮ ПОЛЬЗОВАТЕЛЬ _СЕССИИ _КОНТРОЛЛЕР-----
class UserSessionsController < Devise::SessionsController
....
end
----
ПРОСТРАНСТВО ИМЕН API ПОЛЬЗОВАТЕЛЬ _СЕССИИ _КОНТРОЛЛЕР----(] это относится к моему пользовательскому базовому контроллеру Devise, отмеченному ниже)
class Api::V1::UserSessionsController < Api::V1::DeviseBaseController
...
end
----API NAMESPACE CUSTOM DEVISE BASE CONTROLLER----
class Api::V1::DeviseBaseController < Devise::SessionsController
respond_to :json
end