Ruby on rails 安全地向MyRails网站添加管理访问权限的最佳方法是什么?

Ruby on rails 安全地向MyRails网站添加管理访问权限的最佳方法是什么?,ruby-on-rails,security,authentication,administration,Ruby On Rails,Security,Authentication,Administration,我认为答案是管理员登录,然后检查用户是否有管理员标志,但我也想到了一些其他相关问题 在与非管理员相同的用户表中设置管理员标志(attr_protected)是否更好?或者我应该有一个管理员用户表 我应该为管理员用户创建一个单独的rails应用程序吗?这可能有点过分,因为它们都必须访问相同的数据库(更不用说设置起来可能会非常痛苦) 还有其他建议吗?现在我只需要保护一两个页面,所以我甚至将HTTP基本或摘要身份验证作为临时措施(受保护的内容实际上没有那么私有/重要)。但是我不知道如何实现特定操作的H

我认为答案是管理员登录,然后检查用户是否有管理员标志,但我也想到了一些其他相关问题

在与非管理员相同的用户表中设置管理员标志(attr_protected)是否更好?或者我应该有一个管理员用户表

我应该为管理员用户创建一个单独的rails应用程序吗?这可能有点过分,因为它们都必须访问相同的数据库(更不用说设置起来可能会非常痛苦)

还有其他建议吗?现在我只需要保护一两个页面,所以我甚至将HTTP基本或摘要身份验证作为临时措施(受保护的内容实际上没有那么私有/重要)。但是我不知道如何实现特定操作的HTTP身份验证,我只看到了如何实现它以防止目录访问

任何方向和讨论都会很好。我相信其他堆栈溢出用户将从这次讨论中受益

谢谢

我正在为此使用。限制对任何控制器或任何方法的访问非常简单。在控制器中的示例中,添加此函数:

private
def authorized?
  user.admin?
end

我定义了管理员?方法在我的用户模型中。我还创建了更新?和创造?检查调用了哪个操作的方法。在restful_中授权身份验证?方法在访问控制器时始终运行


我会将所有内容放在一个应用程序和一个表中(不要创建用户和管理表)。通过允许仅为现有管理员用户设置此值,可以在用户控制器中保护管理员标志

Ryan Bates就这一主题编写了一个由三部分组成的优秀铁路专家系列,该系列文章应能让您深思:

  • 第1部分:
  • 第2部分:
  • 第3部分:
还有三种不同认证技术的RailsCast:


    • 我认为这取决于给药的类型

      如果管理员对站点的查看与普通用户相同,但具有附加权限,我将使用admin标志。(或者,随着需求的扩展,一个完整的角色表。)这种情况下,每个人都看到相同的内容,但管理员可以访问普通用户无法访问的各种操作(删除?编辑?禁止?等)

      如果管理员需要的视图与普通站点大不相同,我建议使用完全独立的Rails应用程序访问同一数据库。例如,如果您的“管理员”实际上是帮助台员工,他们将接听电话或处理账单问题,他们可能对数据库有完全不同的看法(可能还有编辑数据的方法),而这在常规应用程序中是不可用的


      拥有多个站点的缺点是,模型(验证、关联等)可能不同步。单一站点的缺点是,您可能会在以前易于理解的站点部分插入各种难看的“if admin”代码。哪个问题更容易处理取决于您的需求。

      +1对于ryanb,任何新的rails开发人员都应该关注他的屏幕广播。如果您将所有管理内容放入管理命名空间,您不需要在代码中添加任何“If admin”,您就可以获得一组模型、一个应用程序(服务器上使用的资源更少)等。
      private
      def authorized?
        user.admin? if update? || create?
      end