Ruby on rails 3.2 带有CanCanAdapter的ActiveAdmin在仪表板上导致无限重定向
在ActiveAdmin 0.6.0中使用CanCan适配器时。我有一个资源正在工作,授权正在工作。但是,当我转到根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" 这在中提到过,但无限
/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