快速处理CSRF错误

时间:2013-11-12 11:18:55

标签: express connect csrf

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

2 个答案:

答案 0 :(得分:0)

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

以下是我使用的自定义错误处理程序:Error handling in an 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失败的特殊消息。

答案 1 :(得分:0)

像任何其他精心设计的中间件csurf passes the error to 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();
        }
    });
});