使用Express.JS为所有路由发送其他http标头

时间:2015-03-12 09:37:40

标签: node.js express

我在路线点('/')有一个简单的登录页面。我想要做的就是当用户使用硬编码的用户名和密码成功登录时设置标题,这样他就无法在没有登录的情况下访问其他路由。我不想为此使用会话或令牌。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

在Express 4.x中,可以使用response.append()response.set()设置标头。但是,对于用户在登录后可能提出的任何后续请求,这对您不太好,因为客户端(我假设浏览器)很可能不会包含您的自定义响应标题中的标题会被发送回您的服务器。

要在所有路径中设置自定义标头,您可以在所有路径中添加自定义中间件功能。 E.g:

var setCustomHeaderFunc = function(req, res, next) {
    res.set('SpecialCustomHeader', 'super-awesome-value');
    next();
};

app.all('*', setCustomHeaderFunc);
app.route('/').get(function(req, res) {
    /* your request handler code goes here */
    res.send('<html />');
});

或有选择地按路线:

var setCustomHeaderFunc = function(req, res, next) {
    res.set('SpecialCustomHeader', 'super-awesome-value');
    next();
};

app.route('/').get(function(req, res) {
    /* your request handler code goes here */
    res.send('<html />');
});
app.route('/super/special').get(setCustomHeaderFunc, function(req, res) {
    /* your request handler code goes here */
    res.send('<html />');
});
相关问题