如何在express.js中保护敏感路由

时间:2020-08-08 11:51:15

标签: javascript node.js mongodb express

所以我正在构建一个运行express js的节点js应用程序,我在app.js中设置了这样的路由:

router.get("/db/:dbName", (req, res) => {
            var dbName = req.params.dbName
            if (dbName) {
                var coll = db.collection(dbName);
                coll.find().toArray()
                    .then(results => {
                        res.send(results);
                    })
                    .catch(err => {
                        console.error(err)
                    })
            } else {
                console.log("put a dbName")
            }

        })

所要做的是,单击按钮,它就会从mongodb数据库中读取并输出“ dbName”集合中的文档。 然后,我想到了一个单独的选项卡,然后输入“ localhost:3000 / db / collection”,当然它仍然可以在没有按钮的情况下工作(即,它返回集合中的所有文档)。 我的问题是,什么是阻止这种行为的方法,基本上只能在您使用按钮时使路线可访问。

1 个答案:

答案 0 :(得分:0)

您可以使用中间件并查找仅通过单击按钮即可传递的值。如果该值未传递到服务器,则可以对其进行检查并采取相应措施


function middleware(req, res, next) {
 if(req.value) {
   next()  
 } else {
   return "Some error"
 }
}

app.route('/route', middleware, function(req, res) {})

进一步检查https://expressjs.com/en/guide/using-middleware.html

相关问题