我使用rails 5.0 康康1.6.10 设计4.2.0 Activeadmin
我经常在newrelic中出现这个错误:
NoMethodError: undefined method `access_denied' for #<Admin::FollowupsController:0x007f112917d270>
在active_admin.rb中,我在config:
中设置:access_denied config.on_unauthorized_access = :access_denied
如何删除此错误并对access_denied而不是500进行良好的重定向管理?
答案 0 :(得分:4)
由于您已将ActiveAdmin
配置为使用:access_denied
方法进行未经授权的访问,因此您需要在application_controller.rb
中定义此方法,并将用户从他们无权访问的页面重定向访问他们有权访问的资源。您还可以在浏览器中显示错误消息。一个典型的例子:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
def access_denied(exception)
redirect_to admin_root_path, alert: exception.message
end
end
重定向到主页的HTML请求并返回403 Forbidden for JSON请求的示例:
def access_denied(exception)
respond_to do |format|
format.json { head :forbidden, content_type: 'text/html' }
format.html { redirect_to main_app.root_url, notice: exception.message }
end
end
如果您希望返回403 Forbidden HTTP代码,请创建一个public/403.html
文件并将其渲染为:
def access_denied(exception)
render file: Rails.root.join('public', '403.html'),
status: 403,
layout: false
end
答案 1 :(得分:0)
正如Wasif所描述的那样解释here in the documentation。