繁体   English   中英

管理员帐户:在哪里,何时何地?

[英]Administrator account: Where, when and how?

在何处,何时以及如何为私人网站创建管理员帐户/用户?

所以我要问的是创建第一个管理员帐户/用户的最佳技术是什么。 就我而言,这是针对私有Web应用程序的。 我说的是将拥有该应用程序的帐户/用户,并在需要时创建/提升其他管理员。 我想您可以将此人作为root用户吗?

这是我在其他网站/网络应用程序中遇到的几种方法。

安装向导:
您会在博客软件或论坛中看到很多。 在安装应用程序时,它将要求您创建一个管理员用户。 专用Web应用程序很可能没有此功能。

安装文件:
您运行的用于安装应用程序的文件。 该文件将为您创建管理员帐户。

配置文件:
一个配置文件,其中包含管理员帐户的凭据。

手动将其插入数据库:
手动将管理员信息插入数据库。

什么时候:

在引导阶段。 有人建议使用seed.rb。 我个人更喜欢使用bootstrapper gem(添加了一些允许我解析csv文件的添加项)。

此操作使您可以创建可以通过以下方式调用的瑞克任务:

rake db:bootstrap

这将创建初始admin用户以及所有种子数据(例如国家/地区列表或默认博客格式等)。 该脚本非常灵活。 您可以要求输入密码,也可以接受密码参数。

怎么样:

在所有情况下,我都使用declarative_authorization来管理用户权限。

您的管理员用户必须在附加的角色列表上返回一个名为“ admin”(或您选择的名称)的角色。 通常,每个用户只有一个角色,主要是因为我可以使用角色继承(例如,默认情况下,管理员也是编辑者)。 这意味着在我的数据库中,我为用户提供了一个名为“ role_id”的字段。 0通常是管理员角色,因为它是第一个创建的角色。

哪里:

db / bootstrap / users.rb(或yaml或csv)中的特定文件指定了激活了admin角色的用户的详细信息。 rake db:boostrap命令解析该文件并相应地创建用户。

我在这里看到您标记了ruby。 在RoR中,您可能会使用/ your_app / db下的seed.rb文件。

如果您使用的是asp.net,我可能会假设您使用的是MSSQL或Oracle。 具有作为安装脚本运行的存储过程可以完成此任务。

我已经看到php应用程序使用install.php文件,该文件在运行一次后会将必要的数据安装到数据库中,然后告诉安装程序在应用程序运行之前删除该文件。

因此,有三种处理方法。

如果您的网站上有用户帐户(我看到您有这些帐户),则具有管理员凭据的配置文件会很尴尬。 此解决方案使您必须复制大部分身份验证逻辑。 最好将帐户保留在数据库中。

我了解您是在为自己准备应用程序,而不是将其交付给客户。 准备安装向导或安装文件似乎在浪费时间。

我会做最简单的-只是原始插入。 优点:无需额外工作,身份验证机制与其他用户相同。 如果使用某种数据库迁移,则可以创建一个迁移,该迁移使用一些虚拟密码创建一个根帐户,稍后可以更改该虚拟帐户。

安装向导:-绝对是最好的方法。 干净,确定且用户友好。 应与应用程序安装程序集成。

安装文件:-好的,但是仅当您有一个且只有一个脚本要运行时。 还有更多->问题以及潜在的安全漏洞(所有忘记了...之后删除此文件的人)

配置文件:避免。 您要求用户了解PHP,应用程序的内部结构,甚至是服务器端的配置(ftp上方的任何内容都可能是“困难的”)

手动将其插入数据库:避免* 2。

另外,如果您使用密码哈希(例如,带有站点特定盐的md5或sha1),则最后两个解决方案是不可能的-今天这是非常必要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM