2017-08-04 38 views
0

我正在Node.JS/Express中开发一个网站,并且直到现在还使用JWT来存储身份验证数据。总之,我有一个AngularJS应用程序,它在Node上调用一个REST服务,并对用户进行身份验证,将用户名和数据POST到服务器,并获取一个包含用户名和过期时间的JWT,然后随每个请求一起发送这需要认证。将NodeJS作为客户端连接到使用会话数据的第三方服务

现在,我需要能够连接到第三方服务(这是一个运行在Delphi上的REST服务),它使用会话来保存认证数据。

使用Fiddler,我可以看到该服务在另一个实现(第三方)中使用时使用JSON身份验证数据进行响应。在随后的所有请求中,客户端都会发送一个名为dsessionid的Cookie,但它不会出现在上一个响应中的“响应cookie”中。

我的问题是:如何将我的NodeJS应用程序中的dsessionid cookie放到我的JWT中,以便将它发送给我的实际客户端?

+0

老兄我最终失去了你。你能直接指出你想做什么吗? –

+0

@GandalftheWhite我想了解如何在设置时读取该“dsessionid”cookie,即将登录数据发送到Delphi服务时 – Hankrecords

回答

0

我设法通过在响应的“Pragma”头中获得会话ID来解决我的问题(我不知道该头文件是否为Delphi应用程序的“默认”,或者它是特定于此应用程序的,我必须查看Fiddler条目以找出有什么标题的数据),然后使用自定义cookie jar与request module将会话ID放入后续请求的Cookie中。

const request = require('request-promise-native') 

return request.get({ 
    url: 'http://example.com:20202/auth', 
    resolveWithFullResponse: true 
}) 
.then(res => { 
    return res.headers['pragma'] 
}) 
.then(sid => { 
    let j = request.jar() 
    j.setCookie(request.cookie('sessionid=' + sid), 'http://example.com') 

    return request.get({ 
    url:'http://example.com:20202/fetchData', 
    resolveWithFullResponse: true, 
    jar: j 
}) 

希望这有助于某人。

相关问题