【问题标题】:what to pass as key instead of username and password for anonymous users in mongodb?在 mongodb 中,作为密钥而不是匿名用户的用户名和密码传递什么?
【发布时间】:2020-02-15 10:21:25
【问题描述】:

我正在尝试创建一个 mongodb 架构,在该架构中我允许该人匿名发布项目,我已经拥有经过身份验证的用户架构,并且我正在考虑仅使用它来允许用户发布他们的项目!关于我应该如何进行的任何想法?

例如:就像匿名用户的真实性应该是什么一样,它应该是所有用户的相同密钥,还是每个用户的不同密钥等等......我对数据库相当陌生,我很困惑。对我有什么建议吗? 架构用户:

const UserSchema = new Schema({
  full_name: {
    type: String,
    required: true
  },
  username: {
    type: String,
    required: true
  },
  email: {
    type: String
  },
  password: {
    type: String,
    required: true
  },
  avatar: {
    type: String
  },
  date: {
    type: Date,
    default: Date.now
  },
  projects: [{ type: Schema.Types.ObjectId, ref: "projects" }]
});

谢谢

【问题讨论】:

  • 一个问题,你希望匿名用户发布项目,还是希望注册用户(有登录名和密码)匿名发布项目?
  • 匿名用户发布项目和数据应该存储在db中
  • 对于匿名用户,只需放弃用户模型的概念。允许在没有用户的情况下创建您的项目
  • 如果用户是匿名的,你如何将他们与用户模型联系起来?你不能......也许在“项目”上添加一个字段,如“Project.anonymous”=布尔值。这确实意味着您用于创建项目的端点必须不受保护。
  • @Raju 这取决于您在项目中存储的内容,我建议不要存储文件,但简单的 JSON 对象就可以了。

标签: javascript node.js database mongodb mongoose


【解决方案1】:

mongodb 中的每个文档都有一个自动生成的唯一 _id 字段,因此您可以使用该字段来识别每个匿名用户。

我的建议是使用cookies来验证用户,你可以使用像passport.js这样的库来验证用户并保存它的mongodb唯一_id,所以当这个用户向你的服务器发送请求时,你可以得到它的_id像这样req.user._id

一个可能的缺点是,当匿名用户清除其 cookie 时,他会失去身份验证,从而失去对其项目的访问权限。

【讨论】:

  • 那么,不,先生,我不希望数据丢失。可以看看@DanStarns 的评论
  • 数据库中的数据不会丢失,只是匿名用户无法跟踪其项目,因为他失去了身份验证,例如,如果您希望每个人都看到所有匿名项目,那么您根本不需要验证用户,只需在项目架构上放置一些标识符以显示该项目没有用户
  • 哦,对了,我有一个gallery.page,所以我想那没关系。
猜你喜欢
  • 2016-12-19
  • 2019-04-06
  • 2020-02-07
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
相关资源
最近更新 更多