我特别提到的情况涉及使用json web令牌(jwt)。例如,如果该Web令牌过期而没有重复代码,我将如何自动添加中间件以仅返回新的json Web令牌?下面的示例代码将显示我的意思。
var token;
if (req.token) {
token = req.token;
};
正如您所看到的,使用此块的两个路由中的代码都是重复的:
// Shift Four Left
VG[0] = (byte)((byte)(VG[1] >> 4) + (byte)(VG[0] << 4));
VG[1] = (byte)((byte)(VG[2] >> 4) + (byte)(VG[1] << 4));
VG[2] = (byte)(VG[2] << 4);
// Shift Four Right
VG[2] = (byte)((byte)(VG[2] >> 4) + (byte)(VG[1] << 4));
VG[1] = (byte)((byte)(VG[1] >> 4) + (byte)(VG[0] << 4));
VG[0] = (byte)(VG[0] >> 4);
我可以使用快速中间件来防止这种重复吗?
答案 0 :(得分:0)
使用“中间件”实现此目的的唯一方法是在middlware链的末尾设置一个处理程序来发送响应。这意味着您的所有处理程序都必须将请求和响应传递给链。它基本上是404处理程序之前的最后一个处理程序。我不建议尝试。或者,您可以为快速应用创建自定义响应方法。
var app = require('express')();
app.response.myJsonRes = function(obj) {
if (this.req.token) {
obj.token = this.req.token;
}
this.json(obj);
};
app.get('/myRoute', function(req, res) {
// get data somehow
res.myJsonRes(data);
});
您甚至可以更改标准json
方法。
var prevJson = app.response.json;
app.response.json = function(obj) {
if (this.req.token) {
obj.token = this.req.token;
}
prevJson.call(this, obj);
};