ActiveAdmin with CanCanAdapter causing infinite redirect on dashboard

人走茶凉 提交于 2020-01-01 05:18:50

问题


When using the CanCan adapter in ActiveAdmin 0.6.0. I have a resource working and authorization is working. However, when I go to /admin, the root ActiveAdmin page, it redirects to /admin and continues this forever.


回答1:


If the user does not have access to a page, ActiveAdmin redirects to the Dashboard. If the user doesn't have access to the dashboard, this results in an infinite redirect.

Solution is to give the user the ability to read the dashboard page. Place this in the ability model object:

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

This is mentioned in the authorization adapter documentation, but the infinite redirect seems to be caused by a bug in ActiveAdmin. It is neither raising a CanCan::AccessDenied, nor displaying an message to the user. At the least, it should display a message in development to help troubleshoot this issue. But it does not currently.




回答2:


You can use config.on_unauthorized_access config option as described here.

# 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

The method access_denied would be defined in application_controller.rb. Here is one example that redirects the user from the page they don't have permission to access to a resource they have permission to access (organizations in this case), and also displays the error message in the browser:

class ApplicationController < ActionController::Base

 def access_denied(exception)
   redirect_to admin_organizations_path, :alert => exception.message
 end

end




回答3:


I had the same error, and I have an admin user with:

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

I just forgot to add the correct role to this user, so maybe someone will have the same infinite redirect loop as me with ActiveAdmin and Cancan.



来源:https://stackoverflow.com/questions/17433208/activeadmin-with-cancanadapter-causing-infinite-redirect-on-dashboard

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!