Mongodb 什么';这是模块化用户模式的最佳方式,以便;s通用
我有一个数据库设计问题。基本上,我希望能够为一个用户模型创建一个模式,然后在扩展用户模型的其他模型中使用这个用户模型,但我希望以一种通用的方式设计它,使它能够在每个应用程序中使用 例如,配置文件或帐户模型可能会扩展用户,在这两种情况下,它们将根据您正在设计的web应用程序而有所不同,但用户的核心凭据在任何web应用程序中都不应不同 您认为用户模型中应该包含哪些字段 我认为成功处理身份验证的最低要求是:Mongodb 什么';这是模块化用户模式的最佳方式,以便;s通用,mongodb,database-design,schema,database-schema,database,Mongodb,Database Design,Schema,Database Schema,Database,我有一个数据库设计问题。基本上,我希望能够为一个用户模型创建一个模式,然后在扩展用户模型的其他模型中使用这个用户模型,但我希望以一种通用的方式设计它,使它能够在每个应用程序中使用 例如,配置文件或帐户模型可能会扩展用户,在这两种情况下,它们将根据您正在设计的web应用程序而有所不同,但用户的核心凭据在任何web应用程序中都不应不同 您认为用户模型中应该包含哪些字段 我认为成功处理身份验证的最低要求是: 电子邮件(登录唯一标识符) 盐(显然!) 密码(duh) lostToken(验证密码丢失功
- 电子邮件(登录唯一标识符)
- 盐(显然!)
- 密码(duh)
- lostToken(验证密码丢失功能的哈希)
- 角色(成员、管理员、编辑等。在我看来,不同站点的角色列表会有所不同,但是对于用户模型来说,这太重要了,不能在这里没有?)
- createdAt(创建帐户时)
- ipAddress(创建帐户时跟踪ip)
- refererUrl(它来自哪个站点)
- lastLoggedIn(用户上次登录的时间)
- isOnline(用户当前是否联机)
- 用户名(可能不是每个站点都使用)
- 连续登录数(类似于堆栈网络)
你觉得怎么样?我想你需要的东西已经解决了。其他一切都取决于您的用例,我们不知道
我的一个建议是关于Salt和Password——您应该使用类似BCrypt的东西,它将为您创建一个Salt散列作为单个字段。与其说是字段本身,不如说是为了便于移植而抽象代码。我的意思是,大多数动态网站可能会有某种形式的用户身份验证功能,但几乎每个网站都需要存储不同的信息。我们的目标是把每个网站都需要的东西放到用户身上。好吧,我不知道你在寻找什么样的答案,但正如我所说的,我想你已经找到了答案。您将其标记为MongoDB—MongoDB是无模式的,并且非常灵活。你可以随心所欲地存储东西——我会更多地考虑我的查询模式,以了解我计划如何获取数据。是的,我用mongodb标记了它,但我也使用node/express/mongoose(mongoose是mongodb的db驱动程序),为了利用它的一些魔力,你需要定义模式。我用光了所有的标签来包含所包含的每一项技术,但我希望讨论的是数据库模式,而不是您正在使用的数据库类型,因为“扩展”模型的方式将高度依赖于您正在使用的数据库,但在本例中也不相关。