3

我正在使用单个User模型adtiveadmin和应用程序本身。我找到了一种解决方案CanCan,可以使用和限制对 activeadmin 模型页面的访问rolify。请注意,在上面的示例中,他们使用常量来创建角色,而我使用rolifygem。不过,我可以轻松访问 activeadmin 的仪表板。当我尝试访问 CMS 中的模型时,我被重定向到应用程序的根页面,并显示一条错误消息,指出我无权访问此页面。

有没有办法限制对 activeadmin 的仪表板和模型的访问,以便我被重定向到 activeadmin 的授权页面?

这是我的 active_admin_resource 初始化程序

#config/initializers/active_admin_resources.rb
ActiveAdmin::ResourceController.class_eval do
protected
  def current_ability
    @current_ability ||= AdminAbility.new(current_user)
  end
end

能力等级定义如下:

#app/models/admin_ability.rb
class AdminAbility < ActiveRecord::Base
include CanCan::Ability

def initialize(user)
  user ||= User.new
  if user.has_role? :admin
    can :manage, :all
  end
end

结尾

Activeadmin 的模型是这样定义的:

#app/admin/some_model.rb
ActiveAdmin.register SomeModel do
  controller.authorize_resource
end

最后activeadmin的路由定义如下:

#config/routes.rb
Rallypoint::Application.routes.draw do
  ActiveAdmin.routes(self)
end
4

1 回答 1

0

..我被重定向到应用程序的根页面..

如 wiki 页面Exception Handlingrescue_from(CanCan::AccessDenied)中所述,大多数应用程序都有一个。ApplicationController

【我想被】重定向到activeadmin的授权页面

尝试rescue_from在 activeadmin 中覆盖它。

于 2013-07-06T15:29:19.290 回答