Rails管理员config.authorize_with-redirect用户(如果不是管理员)



我有一个Rails 3.2.x应用程序,在后端使用rails_admin gem。我还使用Devise进行身份验证,并且在User模型上有一个角色字段,用于说明用户是管理员还是员工。

我想做的是为rails_admin设置一个授权,所以如果你访问http://domain.com/admin只有当current_user.role == "admin"重定向到我的主控制器索引路径home_index_path 时,它才会允许它

我已经设置了一个初始化器来执行此操作,如果角色不是admin,它确实会拒绝admin访问,但我得到了以下错误:No route matches {:controller=>"home"}。我想这可能与routes.rb以及我在routes.rb中安装RailsAdmin线路的位置有关,但我不确定。最终,这应该检查角色以确保它等于admin。如果不是,则重定向到home_index_path并闪烁一条消息。

非常感谢您的帮助。

rails_admin.rb

RailsAdmin.config do |config|
  config.authorize_with do |controller|
    unless current_user.role == 'admin'
      flash[:error] = "You are not an admin"
      redirect_to home_index_path
    end
  end
end

经过一些谷歌搜索,我发现了一个解决此问题的问题。看起来命名空间不同,所以重定向到`main_app.root_path就成功了。我仍然无法让flash信息正常工作。对此有什么想法吗?

RailsAdmin.config do |config|
  config.authorize_with do |controller|
    unless current_user.role == 'admin'
      redirect_to main_app.root_path
      flash[:error] = "You are not an admin"
    end
  end
end

相关内容

最新更新