0

我有一个 Rails 4.2 应用程序,它使用rails_admin来管理其模型的 CRUD 操作。它需要 current_user.admin?== true 用于访问。

我刚刚使用Split gem添加了 A/B 测试。我想使用相同的授权来仅允许管理员查看拆分仪表板,并认为最简单的方法可能是在管理面板中创建路由,以便仪表板在 example.com/admin/split 上可用。

我可以将Split::Dashboard 安装在'admin/split',但这完全绕过了管理员授权。

相反,我想添加一个带有 rails_admin 仪表板的按钮/链接,该仪表板重定向到 admin/split,仪表板安装在 rails_admin 中。

帮助表示赞赏。

4

1 回答 1

0

split 的 web 界面是一个 sinatra 应用程序。只需将 rails_admin 引擎挂载到相同的 url 路径中,它就不会知道任何关于它的信息。查看拆分接口的文档https://github.com/splitrb/split#web-interface。和https://steve.dynedge.co.uk/2011/12/09/controlling-access-to-routes-and-rack-apps-in-rails-3-with-devise-and-warden/

Rack::Auth::Basic 显然不适合你,因为它是基本的 http auth。因此,您必须通过粘贴自定义请求中间件来使用第二种方法。current_user 在那里不可用,因为它是由典型的 auth gem 添加到 rails 控制器中的。但是,如果您的 lib 使用warden 进行身份验证(就像 devise 一样),则信息将在 request.env['warden'] 中。否则,您将不得不从request.env["rack.session"]

于 2016-02-22T12:18:49.010 回答