2017-08-04 15 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 
}) 

希望這有助於某人。

相關問題