我刚刚完成了在单个应用程序上使用单个用户模型和两个示波器设置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