【发布时间】:2013-11-30 22:07:07
【问题描述】:
我正在尝试创建一个拥有 1 名管理员和许多用户的网站。管理员可以控制所有用户。
我正在使用:
- Rails 4.0
- 设计 3.2
- Sqlite3
我已经生成了一个用户模型,并按照说明使用选项 2 向用户模型添加属性。https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-role
在数据库中,它将 admin 的布尔值设置为 false。允许从数据库进行管理员控制是否安全?
我很好奇,因为密码没有存储在数据库中,而是存储了一个加密的字符串。
还有其他方法可以创建管理员吗?我试图遵循选项 1,但它给我带来了很多麻烦。
【问题讨论】:
-
您说“我很好奇,因为密码没有存储在数据库中,而是存储了一个加密的字符串。”为什么您认为加密字符串不如明文密码安全?将明文密码存储在任何地方都是非常糟糕的做法。
-
是的,我理解您为什么不应该存储明文密码。对不起,如果我不清楚 - 我相信加密的字符串更安全。既然我们不存储文本密码,为什么要在数据库中存储访问整个站点的选项?
-
选项 1 还将对整个站点的访问存储在数据库中,只是在不同的表中。如果您不在数据库中存储管理员凭据,您会将其存储在您认为更安全的位置吗?在实践中,我不会推荐 sqlite3。由于您使用的是 Heroku,我会推荐 PostgresSQL。
-
我不确定。它可能是一种方法吗?我的想法是该方法将描述第一个注册的用户 == admin。那将永远不会在数据库中具有管理属性。使用 Postgres 的主要区别是什么?
标签: ruby-on-rails sqlite devise ruby-on-rails-4 admin