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