【问题标题】:How to create MongoDB Authentication in Database?如何在数据库中创建 MongoDB 身份验证?
【发布时间】:2019-02-01 15:55:58
【问题描述】:
我想在访问数据库之前在 MongoDB 上实现身份验证。就像在 MYSQL 中一样,我们必须在 PHP 中为特定数据库创建用户名和密码。
现在我想在 MongoDB 上实现相同的协议。我想知道我们如何为 MongoDB 数据库创建用户名和密码,这样当从我的节点服务器生成请求时,我必须传递凭据,没有凭据就必须生成错误。任何教程建议都非常感谢,或者有人有更好的想法来分享这些东西。我只希望我的数据库只响应真正的或受信任的服务器而不响应其他服务器。
【问题讨论】:
标签:
node.js
mongodb
express
authentication
【解决方案1】:
db.createUser(
{
用户:“用户名”,
密码:“密码”,
角色:[{角色:“readWrite”,db:“database_name”}]
}
)
在您的 DB shell 中编写上述查询。但是记得根据你的使用使用内置角色
【解决方案2】:
使用 express 时,您可以创建身份验证中间件。例如,如果使用该实现,您可以检查有效的 json Web 令牌。
访问 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 端点,但因此会拒绝访问通过此端点访问的数据库。