我尝试使用Mongodb和Node.js实现一个简单的登录系统,但我发现它太麻烦了(每个人都在构建一百个框架而不解释一半代码)。我可能会这样做,但它需要太多工作等等,因为我只想做一个简单的多人游戏。
我对数据库的替代是纯文本文件。我当然打算哈希密码。我想到的第一个问题是文件可能会变得太大,并且服务器会完全放慢尝试阅读它(在假设情况下,我怀疑我的游戏会有那么多用户)。解决方案是在服务器上创建一个users/
文件夹,并将大文件拆分成许多较小的文件夹。他们的名字将与用户名相对应,并且会有密码和电子邮件。这解决了速度问题,我无法看到我仍然需要数据库!
我错过了什么吗?使用数据库还有其他优点吗?此外,如果有人回答了一个登录的Mongodb示例,我将非常高兴,这将解决我的所有问题。尽量让它变得简单。
答案 0 :(得分:4)
有一个吨的理由使用真正的数据库而不是一些被黑客攻击,半生不熟的文件实现。一些大的:
如果您想要“轻量级”,我建议您从SQLite开始。
相关:
答案 1 :(得分:2)
假设您有一个身份验证信息:UserName(10),Password(32)。这些使42个字符。假设每个字符是4个字节(包含宇宙中的所有字符),每个用户消耗42 * 4 = 168个字节。即使你有100,000个用户,它也只需要16 MB的内存。它可以适应整个RAM,你只需要对磁盘进行更改,并在程序启动时全部读取它们。当然,它会有一个小问题,但不是什么大不了的事。
但是,处理文件可能会成为一个问题,您不必重新发明轮子。这就是数据库的用途。我同意,使用Mongo,MySQL可能是一种矫枉过正的问题,但是如果你只打算使用数据库进行身份验证,你可以使用更轻量级的解决方案,你可以使用SQLite,它只有一个文件,一个~270KB的客户端和一个不错的NodeJS库。看看这个不错的post
答案 2 :(得分:1)
如果您正在使用mongo,我强烈建议您使用Mongoose库。它为Mongo提供了出色的ORM。如果您最终决定使用该ORM,则会建立一个名为mongoose-auth的身份验证库。我在我自己的网站上使用了默认的password example。
答案 3 :(得分:1)
如果您正在使用NodeJS,mongoDB可以很好地满足您的需求,还可以选择redis,沙发等... MongoDB是一个很好的地方,任何开始,你已经玩了一点点不妨坚持下去。
查看使用cloudfoundry或Mongolab(均为免费)mongoDb服务器的此repo。
https://github.com/daithiw44/Node_Authenticated_MongoDB
该演示有一个按钮,当点击命中数据库获取值时。将用户名和密码文本字段中的值替换为硬编码值,并且可以对用户进行身份验证并设置expressjs会话。
这是用较旧版本的节点编写的,但对package.json的调整应该会为你提供一个开始的好地方。
希望有所帮助。