Ruby on rails 3.2 带有CanCanAdapter的ActiveAdmin在仪表板上导致无限重定向

Ruby on rails 3.2 带有CanCanAdapter的ActiveAdmin在仪表板上导致无限重定向,ruby-on-rails-3.2,activeadmin,cancan,Ruby On Rails 3.2,Activeadmin,Cancan,在ActiveAdmin 0.6.0中使用CanCan适配器时。我有一个资源正在工作,授权正在工作。但是,当我转到根ActiveAdmin页面/admin时,它会重定向到/admin,并一直持续下去。如果用户无权访问页面,ActiveAdmin会重定向到仪表板。如果用户无权访问仪表板,则会导致无限重定向 解决方案是让用户能够阅读仪表板页面。将其放置在能力模型对象中: can :read, ActiveAdmin::Page, :name => "Dashboard" 这在中提到过,但无限

在ActiveAdmin 0.6.0中使用CanCan适配器时。我有一个资源正在工作,授权正在工作。但是,当我转到根ActiveAdmin页面
/admin
时,它会重定向到
/admin
,并一直持续下去。

如果用户无权访问页面,ActiveAdmin会重定向到仪表板。如果用户无权访问仪表板,则会导致无限重定向

解决方案是让用户能够阅读仪表板页面。将其放置在能力模型对象中:

can :read, ActiveAdmin::Page, :name => "Dashboard"

这在中提到过,但无限重定向似乎是由ActiveAdmin中的错误引起的。它既不会引发CanCan::AccessDenied,也不会向用户显示消息。至少,它应该在开发中显示一条消息,以帮助解决此问题。但目前没有。

您可以使用所述的
config.on\u unauthorized\u access
config选项

方法
access\u denied
将在
application\u controller.rb
中定义。下面是一个示例,该示例将用户从他们无权访问的页面重定向到他们有权访问的资源(在本例中为组织),并在浏览器中显示错误消息:

类ApplicationController
 def access_denied(exception)
   redirect_to admin_organizations_path, :alert => exception.message
 end
结束


我有相同的错误,我有一个管理员用户:

if user.admin?
  can :manage, :all
end

我只是忘了给这个用户添加正确的角色,所以可能有人会使用ActiveAdmin和Cancan拥有与我相同的无限重定向循环

看起来您将发出AA请求。这是正确的解决方案。不幸的是,维基似乎不再提到它了。它在ActiveAdmin 0.6.0I创建的pull请求中工作,以将其放入active_admin.rb初始值设定项中。如果您认为它应该包含在这里,请评论+1。以下是链接:
if user.admin?
  can :manage, :all
end