NodeJS 快速处理CSRF错误:我可以重定向到自定义错误页面吗?

dz6r00yl  于 2023-06-05  发布在  Node.js
关注(0)|答案(2)|浏览(158)

用户在浏览器中单击【返回】按钮后重新提交表单,如何使用CSRF中间件在Express中实现自定义错误处理程序?默认情况下,Express返回一个403页面,其中包含大量堆栈跟踪。我想通过例如重定向用户到一个自定义的错误页面来替换它。我该怎么做?

cgfeq70w

cgfeq70w1#

以下是在Express中编写自定义错误处理程序的一些示例:https://github.com/visionmedia/express/blob/master/examples/error-pages/index.js
以下是我使用的自定义错误处理程序:Express路由中的错误处理
您可能还需要考虑修改connect,以便在CSRF失败时返回与403不同的代码。你可以在这里更改:https://github.com/senchalabs/connect/blob/master/lib/middleware/csrf.js#L82
您可以选择428 Precondition Required。完整列表在这里:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
这样,您就可以只为CSRF失败显示一条特殊消息。

7uzetpgm

7uzetpgm2#

像任何其他设计良好的中间件一样,csurf会将错误传递给next。因此,可以通过以下方式对引发的错误做出React:

var csurf = require('csurf')();
app.use(function (req, res, next) {
    csurf(req, res, function (err) {
        if (err) {
            // do what ever with err
        } else {
            next();
        }
    });
});

相关问题