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

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

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

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

任何方向和讨论都会很棒。我相信其他 Stack Overflow 用户将从这次讨论中受益。

谢谢!

有帮助吗?

解决方案

Ryan Bates 有一个关于这个主题的精彩的三部分 Railscast 系列,应该会给您一些思考的空间:

还有三种关于不同身份验证技术的 Railscast:

其他提示

我使用 restful_authentication插件用于此目的。这是非常简单的限制访问任何控制器或任何方法。上例如在控制器添加此功能:

private
def authorized?
  user.admin?
end

private
def authorized?
  user.admin? if update? || create?
end

我定义管理员?方法在我的用户模型。我还创建了更新?创造?该检查哪些动作方法被调用。在restful_authentication授权?访问控制器时,方法总是运行。

我把一切都在一个应用程序,并在一个表(不创建用户和管理员表)。您可以通过允许只对现有的管理用户设置这个值在用户控制安全Admin标志。

我认为这取决于施用的类型。

如果您的管理员将拥有网站的观点是一样的普通用户,但其他权限,我会去与管理员标志。 (或者,如您需要扩展,一个完整的角色表)。这就是大家看到同样的东西的情况,但管理员可以访问各种动作(删除?编辑?禁止?等等),普通用户没有。

如果您的管理员需要的视图比正常部位完全不同,我建议访问同一个数据库,一个完全独立的Rails应用程序。例如,如果你的“管理员”是真正帮助那些即将接听电话或处理结算问题服务台员工,他们可能不在现有的数据库完全不同的意见(也许方式对数据进行编辑)常规应用。

具有多个站点中的缺点是,它有可能具有模型(验证,关联等)不同步。具有单个站点的缺点是,你可能最终将各种丑陋“如果管理员”代码在您的网站以前容易理解的部分。哪个问题更容易处理取决于您的要求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top