Express-brute无法向页面发送错误消息

时间:2017-02-26 02:53:11

标签: javascript node.js express

为了在我的NodeJS / Express应用程序中防止暴力预防,我决定在我的路由文件中使用express-brute包。我使用该软件包来防止用户随机猜测某个代码,而不是输入他们给出的唯一代码。

我使用express-brute-mongo商店(使用MongoDB)设置了速率限制器对象,如下所示:

// setup the brute force prevention system
var expressBrute = require('express-brute');
var mongoStore = require('express-brute-mongo');
var mongoClient = require('mongodb').MongoClient;
var store = new mongoStore(function(ready) {
    mongoClient.connect("mongodb://localhost/app", function(err, db) {
        if (err) {
            console.log(err);
        } else {
            ready(db.collection('bruteforce-store'));
        }
    });
});
var bruteforce = new expressBrute(store, {
    freeRetries: 2,            // only allow 2 incorrect requests
    minWait: 5 * 1000,         // min wait time of 5 seconds
    maxWait: 5 * 60 * 1000,    // max wait time of 5 minutes

    // use default callback function if all retries are used
    failCallback: expressBrute.FailTooManyRequests
});

当发出太多请求时,将调用failCallback属性,并将其设置为express-brute的默认回调之一,假定为发送JSON错误消息作为响应。但是,虽然防护系统确实有效(我不能再尝试重试),但永远不会发送此错误消息。

回调 运行是非常奇怪的,就像我用

之类的东西替换回调一样
failCallback: function(req,resp,next,nextdate) {
    console.log("too many requests");
    resp.json({ message: 'too many requests' });
}

我在控制台中收到“请求太多”的消息,而JSON命令似乎被忽略了。我甚至尝试在回调中发出GET请求,如果发出太多请求,则重定向到另一个页面,但除了输出到控制台之外,没有任何事情发生。这使我无法向用户提供关于他们被锁定在网站上的任何消息。我很困惑为什么在使用express-brute时我根本无法更改网页。有什么办法可以从回调中更改网页吗?

0 个答案:

没有答案