什么是模块化用户模式的最佳方式,因此它是通用的

时间:2012-03-14 15:48:42

标签: mongodb database-design schema database-schema database

我有一个数据库设计问题。基本上我希望能够为User模型创建一个模式,然后在扩展User的其他模型中使用此User模型,但我想以这样的方式设计它,使其足够通用,可以在每个应用程序中使用。

例如,配置文件或帐户模型可能会扩展用户,在这两种情况下,它们将根据您正在设计的Web应用程序而有所不同,但用户的核心凭据在任何Web应用程序中都不应该有所不同。

您认为用户模型中应包含哪些字段?

我认为成功处理身份验证的最低要求是:

  • 电子邮件(登录唯一标识符)
  • 盐(显然!)
  • 密码(duh)
  • lostToken(用于验证丢失密码功能的哈希值)
  • 角色(成员,管理员,编辑等等.IMO这个角色列表会因站点不同而对用户模型来说太重要了,不能在这里?)

现在我们进入其他仍然非常有用的有趣领域:

  • createdAt(帐户创建时)
  • ipAddress(在创建帐户时跟踪IP)
  • refererUrl(它来自哪个网站)
  • lastLoggedIn(用户上次登录时)
  • isOnline(用户当前在线)

还有更多领域仍然非常有用:

  • 用户名(可能不会在每个网站上使用)
  • 连续登录次数(类似于堆栈网络)

我认为社交数据(喜欢,投票,个人资料视图),徽章/成​​就,上次更新个人资料/帐户/其他内容以及其他信息(如姓名)属于每个网站的个人资料模型。

您怎么看?

1 个答案:

答案 0 :(得分:0)

我认为你已经得到了你需要的东西。其他任何事情都取决于你的用例,我们不知道。

我有一个建议是盐和密码 - 你应该使用像BCrypt这样的东西,它会为你创建一个盐渍哈希作为单个字段。