首页 > 解决方案 > Rails Admin -> 仅当用户具有角色 admin 时才能访问

问题描述

您好,我刚刚发现了 gem railsadmin,我对其进行了配置,但目前所有用户都可以通过在其 url 中键入 admin 来访问管理部分,我想限制访问权限并仅允许具有管理员角色的用户访问。

在我的用户表中,我已经有一个角色列,我写了“admin”来创建一个用户 -> 超级用户

RailsAdmin.config do |config|
 ## == Devise ==
  config.authenticate_with do
    warden.authenticate! scope: :user
  end
  config.current_user_method(&:current_user)
end

实际上所有用户都可以访问管理仪表板

标签: ruby-on-railsruby-on-rails-5

解决方案


如果您使用的是设计,您可以通过以下方式限制访问routes.rb

authenticate :user, lambda { |u| u.role == "admin" } do
  mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
end

或者您可以使用授权宝石,例如cancancan (如何使用)


推荐阅读