当用户尝试通过URL访问它时,如何阻止Rails_admin面板URL并将用户重定向到主页?我可以在routes.rb中执行此操作吗?
我刚刚安装了Rails_admin gem,并在route.rb文件中添加了route。
我可以在routes.rb文件中设置条件以不允许用户访问,而只能访问管理员吗?
这是我去Rails_admin的路线
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
答案 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
当用户未登录或公共用户时,这将重定向页面。