首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在节点的req.user会话中设置更新的令牌

在节点的req.user会话中设置更新的令牌
EN

Stack Overflow用户
提问于 2016-11-21 19:24:59
回答 1查看 466关注 0票数 0

因此,这里我有一个调用API的路由,将用户令牌发送给它。然后,API生成一个新的令牌,并在响应中将其发回。

然后,我想用新的令牌更新req.user.token,这样我就可以继续在会话中进行有效的API调用。但是,我只能对响应范围之外的会话执行此操作。

这是我的尝试。如何让req.user.token获取更新后的令牌?

代码语言:javascript
代码运行次数:0
运行
复制
router.post('/:id', function (req, res, next) {

    var returnedToken = "";

    var options = {
        url: configUrl + '/' + req.params.id,
        method: 'POST',
        headers: {
            'token': req.session.passport.user.token,
            'caller': 'client[route:POST user]',
            'x-request-id': req.requestId,
        },
        json: req.body
    };

    request(options, function (error, response, body) {
        if (error) {
            req.logger.error({err: error}, 'connection to user service has failed');
            res.status(500).send(error.message);
        } else {
            res.status(response.statusCode).send(body);
            returnedToken = response.body.token;
        }
        return next();
    })
    req.user.token = returnedToken;

});

如果我在请求中设置了req.user.token,那么它在客户端的其他地方是不可用的。但是,如果我在上面设置req.user.tokenreturnedToken是未定义的,因为它显然在作用域之外。

有什么办法可以解决这个问题吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-11-21 20:00:06

您可以在发送响应之前在req.user.token中设置该值。

req.user.token = returnedToken;res.status(response.statusCode).send(body);

因此,同样的请求也将在下一个中间件中可用。另外,如果您想从用户中删除旧的会话令牌,可以执行delete(req.user);使用此命令,您可以从request对象中删除旧的令牌值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40718990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档