【发布时间】:2017-03-23 11:43:47
【问题描述】:
当用户点击某个端点时,我在服务器上调用了以下函数,例如/api/login 我在服务器上处理它,因为我想设置服务器端 cookie 来存储身份验证令牌。目前它看起来像这样:
const createSession = (req, res, url) => {
const apiCall = request.post(url, (err, response, body) => { // eslint-disable-line
if (err) return res.sendStatus(500);
else if (response.statusCode !== 200) return res.status(response.statusCode).send(body);
const data = JSON.parse(body);
const options = { path: '/', hostOnly: true, httpOnly: true, maxAge: 3300000 }; // 55 min expiration
if (secrets.DOMAIN !== 'localhost') options.secure = true;
res.cookie('SESSION_TOKEN', data.token, options);
res.cookie('SESSION_EMAIL', data.email, options);
res.status(200).send(body);
});
req.pipe(apiCall);
};
它有效,但我发现它非常冗长,并且不确定是否有更好的方法来处理这个问题,也许除了请求库之外还有其他方法?我试图用节点的 http 来解决这个问题,但从来没有。
这是在我的快递服务器中使用此功能的示例:
app.post('/api/login', (req, res) => {
const url = `${secrets.API_HOST}/login`;
createSession(req, res, url);
});
【问题讨论】:
标签: node.js express cookies server request