用户在浏览器中单击【返回】按钮后重新提交表单,如何使用CSRF中间件在Express中实现自定义错误处理程序?默认情况下,Express返回一个403页面,其中包含大量堆栈跟踪。我想通过例如重定向用户到一个自定义的错误页面来替换它。我该怎么做?
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失败显示一条特殊消息。
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(); } }); });
2条答案
按热度按时间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失败显示一条特殊消息。
7uzetpgm2#
像任何其他设计良好的中间件一样,csurf会将错误传递给next。因此,可以通过以下方式对引发的错误做出React: