2017-04-19 47 views
0

我目前正在致力於Facebook Messenger的聊天機器人。我正在使用Microsoft bot框架,代碼是用node.js編寫的。我應該在哪裏存儲訪問令牌

我正在通過API與數據庫進行交互。對於每個請求,我必須在請求頭中傳遞一個訪問令牌。我已經在互聯網上閱讀過,你通常會在Cookie或網絡存儲器中存儲這樣一個令牌。不過,我也發現你不能在Facebook Messenger上做到這一點。我正在考慮將訪問令牌存儲在變量中,但我擔心這可能不安全。 有沒有其他安全的方式來存儲訪問令牌?

我對node.js相當陌生,這是我第一次使用令牌。非常感謝幫助。

+0

「對於每個請求,我必須在請求 標頭內傳遞訪問令牌。」 爲什麼? –

+0

@Bob Swager我已經實現了賬戶鏈接。用戶必須輸入他的用戶名和密碼。我發送了一個包含這兩個值的發佈請求。如果數據庫中存在具有給定憑證的條目,我將獲得一個訪問和刷新令牌。爲了向用戶發送個性化數據,我必須將訪問令牌傳遞給每個請求。 –

+0

我確定你有每個用戶的唯一ID。對 ? 您不必每次都刷新令牌。 –

回答

2

您可以使用session.userData來保存您的數據庫令牌。如果您擔心安全,請在保存前加密。

session.userData.dbtoken = encryptToken(token); 

令牌可以在以後檢索和使用,當你需要它:

var token = decryptToken(session.userData.dbtoken); 
var databaseData = getUserDataFromDatabase(token); 

https://docs.botframework.com/en-us/core-concepts/userdata/

或者使用本地數據庫一樣NeDB:https://github.com/louischatriot/nedb這將是最安全的選擇,因爲數據庫將駐留在您的服務器上。

+0

非常感謝。 –

+0

如果我在將數據存儲到本地數據庫之前對其進行加密,是否會增加安全性? –

+0

「它會增加安全性」嗎?加密數據通常比未加密的數據更安全。但是,如果攻擊者獲得對源代碼和加密標記的訪問權限,那麼他們也可以解密該標記。我不知道所有的要求,或者你的特定項目的細節。 –