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