노드

2016-11-21 1 views
0

의 req.user 세션에서 업데이트 된 토큰 설정 그래서 여기에 사용자 토큰을 보내는 API를 호출하는 경로가 있습니다. 그런 다음 API는 새 토큰을 생성하고이를 응답으로 다시 보냅니다.노드

req.user.token을 새 토큰으로 업데이트하여 세션에서 유효한 API 호출을 계속할 수 있습니다. 그러나 나는 응답 범위 밖에있는 세션에서만이 작업을 수행 할 수 있습니다.

내 시도입니다. req.user.token을 업데이트 된 토큰으로 만들려면 어떻게해야합니까?

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 후 다른 곳에서 클라이언트에서 사용할 수없는 설정합니다. 그러나 내가 returnedToken 위에있는 req.user.token을 설정하면 분명히 범위를 벗어나기 때문에 정의되지 않습니다.

어떻게 해결할 수 있습니까?

감사

답변

0

당신이 응답을 전송하기 전에 req.user.token의 값을 설정할 수 있습니다.

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

다음 미들웨어에서도 동일한 요청을 사용할 수 있습니다. 또한 사용자가 이전 세션 토큰을 제거하려는 경우 delete (req.user); 이것으로 요청 객체에서 이전 토큰 값을 삭제할 수 있습니다.

+0

감사합니다. 그것은 효과가 있습니다, 때로는 단지 신선한 눈이 필요합니다! – Sam