1

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

4

2 回答 2

0

以下是在 Express 中编写自定义错误处理程序的一些示例:https ://github.com/visionmedia/express/blob/master/examples/error-pages/index.js

以下是我使用的自定义错误处理程序:Express route 中的错误处理

当 CSRF 失败时,您可能还需要考虑修改 connect 以返回与 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 失败的特殊消息。

于 2013-11-12T15:50:19.283 回答
0

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

var csurf = require('csurf')();
app.use(function (req, res, next) {
    csurf(req, res, function (err) {
        if (err) {
            // do what ever with err
        } else {
            next();
        }
    });
});
于 2014-05-13T07:40:58.853 回答