【问题标题】:How to make the whole site accessible by the single admin only如何使整个网站只能由单个管理员访问
【发布时间】:2014-11-17 10:06:49
【问题描述】:

如何在 Ruby on Rails 中实现以下行为?

我需要让整个网站只能由单个管理员访问,因此我需要在每个未登录用户的操作上显示授权页面。

最好的方法是什么?也许cancancan 或类似的东西?请给我一个例子好吗?

我正在使用 Ruby on Rails 4.1.4 顺便说一句。

提前致谢。

【问题讨论】:

  • 我已经使用 Cancan 来提供管理功能,但这将是一个很好的例子。但是您可以从这里参考 Cancan 示例 [railscasts.com/episodes/…
  • before_action 中的一个简单的 ApplicationController 应该可以工作。

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

如果您只有一位用户可以访问您的网站,那么您也可以使用devise gem。只需使用设计创建简单的用户。并在您的 applications_controller.rb 上使用 before_filter :authenticate_user! 。因此,每个请求都会在到达控制器之前进行检查。

【讨论】:

  • before_filter 在 rails 3 上消失了,他标记 rails 4
  • Rails 4 中没有弃用它。before_action 只是 before_filter 的新语法。所以两者都可以使用。看到这个stackoverflow.com/questions/16519828/…
【解决方案2】:

您可以使用 Devise 进行设置。由于您想要一个单用户系统,因此您不需要授权资源的cancancan

基本上,您可以通过添加一个需要对使用进行身份验证的前置过滤器来锁定应用程序:

before_action :authenticate_user!

在 Devise wiki 上有关于如何设置注册以仅接受一个用户的指南。 https://github.com/plataformatec/devise/wiki/How-To:-Set-up-devise-as-a-single-user-system

【讨论】:

    【解决方案3】:

    我是 ActiveAdmin 的忠实粉丝。即使它提供searchfiltersorting 设施,您也可以通过Active Admin 管理整个站点的内容和用户。如您所述,whole site accessible by the single admin only, 未登录用户的操作

    供您参考:

    如果您想授权用户登录,那么当 papirtiger 回答时,您可以简单地使用 before_action :authenticate_user! 方法


    更新:

    正如您提到的,所有用户都可以访问该页面,那么在这种情况下,我建议将 cancancan 用于 Rails 4。您可以简单地分配角色并根据您的角色可以授予使用操作的访问权限。提供角色管理系统

    在您的用户表中添加一列roles 作为布尔类型,并将管理员用户分配给false,默认情况下将所有用户分配给true。这是实现目标的最简单方法。 在您的控制器集中如果用户的角色false 那么他可以访问所有内容..

    例如 Add an Admin Role

    【讨论】:

    • 不幸的是,我无法在 Ruby on Rails 4.1.4 中安装它——stackoverflow.com/questions/25991774/…。你能帮帮我吗?
    • @FrozenHeart : 答案贴在那里
    • 好的,现在我有一个与数据库关联的模型和管理面板,我可以在其中向数据库添加新记录。但是仍然存在可供所有用户访问的 127.0.0.1:3000/purchases 页面。我怎样才能使它只能从管理面板访问?
    • 为什么我需要在辅助方法中分配admin_user的详细信息?我想我需要检查一下。请给我一个例子好吗?
    • 是的,如果您只是想创建模型并且不允许用于查看/编辑/删除并通过管理员从后端管理它然后 ActiveAdmin 这样做(删除所有查看/编辑/删除链接) ... Cancancan 根据其授予访问权限的角色用于 RoleManagement
    猜你喜欢
    • 1970-01-01
    • 2013-02-06
    • 2015-06-04
    • 2019-05-18
    • 2010-11-15
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多