在我的AA应用程序中,我使用以下说明隐藏我不希望非管理员用户看到的菜单:
menu :if => proc{ current_user.is_admin? }
但这并不妨碍这些用户在url中输入/admin/users并访问用户菜单内容。防止非管理员用户访问隐藏菜单的最佳方法是什么?
你可以用cancan来做这件事,也可以像这样写你自己的过滤器,
controller do before_filter :check_admin def check_admin unless current_user.is_admin? redirect_to "/", :error => "Access denied" end end end
对于cancangem,您需要定义能力文件,然后可以使用
controller.authorize_resource
方法。