在 ActiveAdmin 0.6.0 中使用 CanCan 适配器时。我有一个资源正在工作并且授权正在工作。但是,当我转到/admin
根 ActiveAdmin 页面时,它会重定向到/admin
并永远持续下去。
问问题
2682 次
3 回答
16
如果用户无权访问页面,ActiveAdmin 将重定向到仪表板。如果用户无权访问仪表板,则会导致无限重定向。
解决方案是让用户能够阅读仪表板页面。将其放置在能力模型对象中:
can :read, ActiveAdmin::Page, :name => "Dashboard"
授权适配器文档中提到了这一点,但无限重定向似乎是由 ActiveAdmin 中的错误引起的。它既不会引发 CanCan::AccessDenied,也不会向用户显示消息。至少,它应该在开发中显示一条消息以帮助解决此问题。但目前没有。
于 2013-07-02T18:33:59.070 回答
6
您可以使用此处config.on_unauthorized_access
描述的配置选项。
# You can also specify a method to be called on unauthorized
# access. This is necessary in order to prevent a redirect
# loop that can happen if a user tries to access a page they
# don't have permissions for
# (see [#2081](https://github.com/gregbell/active_admin/issues/2081)).
config.on_unauthorized_access = :render_403
该方法
access_denied
将在application_controller.rb
. 这是一个示例,它将用户从他们无权访问的页面重定向到他们有权访问的资源(本例中为组织),并在浏览器中显示错误消息:类 ApplicationController < ActionController::Base
def access_denied(exception) redirect_to admin_organizations_path, :alert => exception.message end
结尾
于 2013-09-12T15:56:47.433 回答
1
我有同样的错误,我有一个管理员用户:
if user.admin?
can :manage, :all
end
我只是忘了给这个用户添加正确的角色,所以也许有人会和我一样使用 ActiveAdmin 和 Cancan 进行无限重定向循环。
于 2013-09-17T19:26:24.230 回答