我剛剛完成了在單個應用程序上使用單個用戶模型和兩個示波器設置Devise,因此我可以使用/admin/login
以及常規/users/login
路徑。這工作得很好,我的config/routes.rb中文件看起來像這樣:CanCan和Devise,基於角色限制登錄
devise_for :users,
:path_names => { :sign_in => 'login', :sign_out => 'logout' }
devise_for :admins,
:class_name => 'User',
:skip => [:passwords, :registrations, :confirmations, :sessions],
:controllers => { :sessions => 'admin/sessions' } do
get 'admin/login' => 'admin/sessions#new', :as => :new_admin_session
post 'admin/login' => 'admin/sessions#create', :as => :admin_session
delete 'admin/logout' => 'admin/sessions#destroy', :as => :destroy_admin_session
end
這工作得非常愉快,我可以登錄到應用程序的每個側面而不影響其他。也就是說,會話名稱是分開的,並且登錄到一個不會將您登錄到其他會話中。
現在,我已經使用我的Roles
模型和Ability
模型設置了CanCan,並且在我的數據庫中定義了這些模型並正在工作。
問題是,我希望能夠填寫表格admin/login
,並收到錯誤消息,因爲我的角色不允許我登錄到該區域。我怎樣才能做到這一點?
某處,您的應用程序正在詢問cancan以獲取基於角色的權限。你在哪裏?如果您正在使用調試器,則可以在能力模型上添加跟蹤,然後查看調用者的回溯。你有一個過濾器。 – Amala