如何在数据库中创建MongoDB身份验证?

时间:2018-08-27 06:38:15

标签: node.js mongodb express authentication

我想在访问数据库之前在MongoDB上实现身份验证。像在MYSQL中一样,我们必须在PHP中为特定数据库创建用户名和密码。

现在,我想在MongoDB上实现相同的协议。我想知道如何为MongoDB数据库创建用户名和密码,以便从节点服务器生成请求时,我必须传递凭据,而没有凭据则必须生成错误。任何教程建议都非常感谢,或者有人有更好的主意来分享。我只希望我的数据库仅对正版服务器或可信服务器做出响应。

2 个答案:

答案 0 :(得分:0)

使用Express时,您可以创建身份验证中间件。例如,如果使用该实现,则可以检查有效的json网络令牌。

然后,用于访问db的语法为:

app.get(«/api/db», authMiddleware, async (req, res) => {
    const db = Db.find();
}

其中authMiddleware是导出的函数,您可以根据所需的验证来实现自己,而db是您尝试访问的任何db,例如类别或项目之类。

如果您有多个中间件,则可以简单地将它们添加为数组,如下所示:

app.get(«/api/db», [middleware1, middleware2], async (req, res) => {})

例如,使用它可以例如首先检查是否存在登录用户,然后可以检查该用户是否为管理员。 请注意,这种方法拒绝对您的api端点的访问,但是因此将拒绝对通过此端点访问的数据库的访问。

答案 1 :(得分:-1)

db.createUser(   {     用户:“ user_name”,     pwd:“密码”,     角色:[{角色:“ readWrite”,数据库:“ database_name”}]   } )

  

在您的数据库外壳中编写以上查询。但是请记住根据您的用途使用内置角色