我正在使用 NodeJS 和 Express。 Express 支持中间件,这对于通过“预处理器”发送所有路由进行身份验证等非常方便。
是否有等效的后处理器?
我想更新所有响应的 token 。这样,当用户“工作”时,他们的身份验证就不会过期,因为我总是刷新它。
可能会有些困惑,所以我将添加一段示例代码:
router.get('/auth', [auth], async function({ user }, res) {
…
<<code to generate new token>>
return res.header('Authentication', 'Basic ' + token).send(200);
});
因此,在每条路线的末尾,我想调用以下代码来更新 header :
<<code to generate new token>>
return res.header('Authentication', 'Basic ' + token).send(200);
[auth] 是中间件。我想知道是否有一个“终端软件”像中间件一样简单,可以在发送给用户之前发送所有响应,这样我就不必在每个路由中手动复制 token 生成和 header 代码。
谢谢
吉娜
最佳答案
您可以从路由处理程序中调用 next
回调来调用下一个中间件,如下所示
router.get('/auth', [auth], async function({ user }, res, next) {
...
next()
});
app.use((req, res, next) => {
<<code to generate new token>>
res.header('Authentication', 'Basic ' + token).send(200);
})
或者这样
const addAuth = (req, res) => {
<<code to generate new token>>
res.header('Authentication', 'Basic ' + token).send(200);
}
router.get('/auth', [auth], async function({ user }, res, next) {
...
next()
}, addAuth);
但是您必须小心,只能使用 res.send
函数一次,因为它会关闭响应流,但您可以使用 res.write
/res .end
.
关于node.js - 通过 final方法发送所有路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56434571/