SailsJS上的自定义CSRF错误消息

时间:2014-05-13 00:35:59

标签: node.js sails.js

我使用Sails 0.9.8支持小型电子商务网站。目前,我的会议在30分钟后到期。当用户打开网站的时间超过(可能在后台)时,他们会在提交时遇到预期的Forbidden错误,这会导致节点堆栈出错(csrf已过期)。虽然这对开发人员友好,但我更喜欢向他们展示一些自定义错误页面,甚至刷新页面。

对于v0.9.8有没有解决方法,或者升级到v0.10是否更容易?

1 个答案:

答案 0 :(得分:0)

你可以在v9中完成它,虽然它有点不明显。诀窍是将Sails作为后备Express中间件包含的默认500错误处理程序转换为真正的Express错误处理程序。要做到这一点,只需在应用程序的config/500.js文件中更改函数签名:

function serverErrorOccurred(errors, req, res)

function serverErrorOccurred(errors, req, res, next)

Express将具有四个参数的任何中间件解释为错误处理程序,因此当CSRF代码传递其错误时,此方法将运行。现在,由serverErrorOccurred方法决定是否错误来自缺少的CSRF令牌;我首先检查errors.status以查看它是403,然后检查req.urlreq.method以确定用户尝试执行的操作。玩得开心!