如何阻止我的网站上的用户访问Rails_admin面板URL?

时间:2018-06-22 06:55:13

标签: ruby-on-rails rails-admin

当用户尝试通过URL访问它时,如何阻止Rails_admin面板URL并将用户重定向到主页?我可以在routes.rb中执行此操作吗?

我刚刚安装了Rails_admin gem,并在route.rb文件中添加了route。 我可以在routes.rb文件中设置条件以不允许用户访问,而只能访问管理员吗? 这是我去Rails_admin的路线 mount RailsAdmin::Engine => '/admin', as: 'rails_admin'

2 个答案:

答案 0 :(得分:1)

他们的docs describe此用例:

  

可以使用authorize_with方法添加授权。如果您传递了一个阻止,它将通过Rails Admin中每个操作的before_action触发。

RailsAdmin.config do |config|
  config.authorize_with do
    redirect_to main_app.root_path unless current_user.is_admin?
  end
end

这是在 config / initializers / rails_admin.rb

中设置的

进一步的说明

如文档中所述,这会在每个 RailsAdmin操作之前触发带有传递的块的before_action调用。你可以这样想象

before_action :authorize_admin

def authorize_admin
  redirect_to main_app.root_path unless current_user.is_admin?
end

这类似于向您的ApplicationController添加before_action触发器-只是它仅通过RailsAdmin操作自动触发。

答案 1 :(得分:0)

只需将此代码添加到您的appication_controller.rb文件中,就可以了。

 RailsAdmin.config do |config|
  config.authorize_with do 
    if current_user.nil?
      redirect_to main_app.root_path
    else
      redirect_to main_app.root_path unless current_user.admin?
    end
  end
 end

当用户未登录或公共用户时,这将重定向页面。