Tôi muốn sử dụng Devise với hai không gian tên: không gian tên API và không gian tên mặc định, nhưng hai dường như xung đột nhau khi người dùng cố đăng nhập. Ý nghĩa, tùy theo điều kiện nào không gian tên tham chiếu đến Devise đầu tiên kết thúc lên là nơi chuyển hướng cuối cùng. Ví dụ: Nếu tôi cố tạo một phiên mới trong không gian tên mặc định, nó sẽ không thành công trên đường dẫn phiên người dùng đó, và sau đó cố gắng tạo phiên trên đường dẫn phiên API/phiên bản v1.Sử dụng Devise với nhiều không gian tên cho cùng một kiểu mẫu
Làm cách nào để hai hành động độc lập?
Cả hai đều đề cập đến một đối tượng Người dùng. Bộ điều khiển user_sessions cho không gian tên mặc định là 'user_sessions'. Các user_sessions điều khiển cho API/V1 namespace là '/ 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
----- gian tên mặc định USER_SESSIONS_CONTROLLER -----
class UserSessionsController < Devise::SessionsController
....
end
----
API NAMESPACE USER_SESSIONS_CONTROLLER - --- (điều này đi vào bộ điều khiển của tôi tùy chỉnh lập mưu cơ sở đánh dấu bên dưới)
class Api::V1::UserSessionsController < Api::V1::DeviseBaseController
...
end
---- API NAMESPACE cUSTOM đưa ra cƠ sỞ cONTROLLER ----
class Api::V1::DeviseBaseController < Devise::SessionsController
respond_to :json
end
Nếu bạn nhìn vào mã tôi đã đăng, tôi đã thực hiện chính xác điều đó. Giải pháp được đề xuất của bạn khác nhau như thế nào? – beeudoublez