2014-04-04 80 views
2

我有一個User模型的應用和以下路線:設計authenticate_admin錯重定向

devise_for :users, path: 'account', 
    path_names: { sign_in: 'login', sign_out: 'logout' }, 
    controllers: { registrations: 'registrations' } 

,並安裝在「/ admin」的有AdminUser模型安裝引擎和以下路線:

devise_for :admin_users, class_name: "MyEngine::AdminUser", module: :devise, 
    path: '', path_names: {sign_in: 'login', sign_out: 'logout'}, 
    controllers: { registrations: 'my_engine/registrations' } 

引擎應用控制器內我有before_filter :authenticate_admin_user!被重定向錯誤main_app根路徑,而不是管理員登錄(或任何登錄)頁,贈送:

Completed 401 Unauthorized

爲什麼這樣做,而不是要求admin_user登錄?

回答

0

你有沒有嘗試過這樣的:

#config/routes.rb 
devise_for :admin_users, class_name: "MyEngine::AdminUser", module: :devise, 
    path: '', path_names: {sign_in: 'login', sign_out: 'logout'}, 
    controllers: { registrations: 'my_engine/registrations', sessions: "my_enging/sessions" } 

#app/controllers/admin/sessions_controller.rb 
class Admin::SessionsController < ::Devise::SessionsController 

    protected 

    #Logout Path 
    def after_sign_out_path_for(resource_or_scope) 
     admin_root_path 
    end 

    #Login Path (if already logged in) 
    def after_sign_in_path_for(resource) 
     admin_root_path 
    end 

end 
+0

豐富嗨,那不是真正的問題來了,問題是,我不能甚至得到儘可能簽署的資源,所以那些AREN沒有被擊中。 –

+0

嗯,沒關係。這是值得提供的代碼供將來參考:)你問過這個問題後,你有任何進展嗎? –

+0

剛剛發佈了我的「解決方案」:) –

1

我不得不在main_app路線加色器件路線,稍微改變登錄/註銷路徑:

devise_for :admin_users, class_name: "MyEngine::AdminUser", module: :devise, 
    path: '', path_names: {sign_in: 'admin/login', sign_out: 'admin/logout'}, 
    controllers: { registrations: 'my_engine/registrations' } 

我還是覺得應該有一個辦法做到這一切的寶石裏面,但這個工作現在...