2012-08-23 19 views
1

我們有admin_users,我們有常規用戶,他們都有單獨的表格,模型和設計登錄。rails設計 - 如何爲兩個不同的用戶模型設計2個身份驗證?

對於只使用一個用戶表的設計和對角色使用cancan可能更有意義,但應用程序已經使用兩個獨立的用戶表創建,並且此時不能更改它們。

管理員用戶功能,包括登錄,工作正常。 最初標準用戶訪問只能通過基於鏈接和令牌的身份驗證,但需要更改。

在路線,我們有

devise_for :admin_users, ActiveAdmin::Devise.config 
devise_for :users 
resources :users, :only => [:update, :edit] 

所以我加了根路徑爲用戶的資源,其中登錄成功變成由設計文件的地方作爲indcated:

devise_for :admin_users, ActiveAdmin::Devise.config 
devise_for :users 
resources :users, :only => [:update, :edit] do 
    root to: "practitioner_activities#welcome" 
end 

和我然後也嘗試刪除only =>例如

devise_for :admin_users, ActiveAdmin::Devise.config 
devise_for :users 
resources :users do 
    root to: "practitioner_activities#welcome" 
end 

對於(常規)用戶模式,我改變了:

devise :token_authenticatable, 

也有:

devise :token_authenticatable, # token login still permitted. 
     :database_authenticatable, :recoverable, :rememberable, 
     :trackable, :validatable 
     # Not sure if these will make a difference but they are like this in other apps. 

但不是重定向到practitioner_activities#歡迎用戶被髮送回登錄屏幕。

我注意到,登錄POST的控制檯中的第一行使用的是AdminUser模型,而不是User模型。任何想法如何解決?

Started POST "/" for 127.0.0.1 at 2012-08-23 13:54:50 -0400 
Processing by HelpController#show as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"28iGxAB+URoIKoBQtPizGAosJoZ/V7Vko1w/bYMvesE=", "new_user_session_path"=>{"email"=>"[email protected] 
rg", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign In"} 
    AdminUser Load (0.4ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = 1 LIMIT 1 

登錄表單本身是:

= semantic_form_for(:new_user_session_path, 
    :html => {:id => "session_new"}) do|f| 

     = f.inputs do 
     = f.input :email, :label => "Username" 
     = f.input :password 
     = f.input :remember_me, :as => :boolean, :if => false 
     = f.commit_button "Sign In" 
+0

出於好奇,你有沒有嘗試在'devise_for:admin_users'之前聲明'devise_for:users'? – PinnyM

+0

是的,偉大的想法,即我有同一個;)是的,我嘗試過,但它沒有幫助。我發現的一件事情是,application_controller正在檢查current_admin_user.present?這是失敗的,我可以用'not current_admin_user&='''解決。 –

回答

0

最終的主要事情是剛剛色器件發電機再次,然後編輯設計的看法。