2016-10-03 61 views
0

它基本上是在標題中。如果所有節點模塊都是開源的,那麼您如何保持用戶名和密碼的私密性?像這樣:如何在私人節點模塊中保留憑據?

// code 
db.connect(username, password); 
// more code 

該模塊的任何下載器都能夠看到憑證。我如何做到這一點,所以他們不能?

回答

0

通常,您可以從配置文件(不是來自您的公共共享代碼)加載憑據,只有配置文件的外殼將包含在公共存儲庫中。

在node.js的,來讀取配置文件中的最簡單方法之一是使文件中的數據是JSON,給文件.json文件擴展名的,那麼你可以只是require()加載它在:

const config = require('./config.json'); 
+0

那麼你如何訪問這個配置文件而不在模塊中共享呢? – baranskistad

+0

@bjskistad - 我不明白你在問什麼。安裝代碼時,安裝過程的一部分是手動創建/編輯所需的配置文件,就像手動安裝並創建正確的數據庫一樣。然後,您可以將配置文件放在任何你想要的地方,並使用帶有require()的適當路徑來訪問它。該模塊引用了配置文件,但是您不會在公共存儲庫中放置功能完整的配置文件。您只能將配置文件放在安全的服務器端目錄中,並在其中運行服務器源文件。 – jfriend00

1

您不會將憑據包含在節點模塊中,那將被認爲是不好的做法。你會爲節點模塊的用戶提供一些方法來提供他們自己的憑證。例如,如果模塊導出了一個類。你可以有一個需要用戶名和密碼的類構造函數。

所有節點模塊也不是開源的。 NPM提供了託管私人包裹的功能(收費),或者你有類似sinopia的東西,它可以讓你自己託管一個包裹註冊表以便與npm一起使用。

+0

如果你不把信譽放在一個模塊中,那麼heroku如何連接到它的數據庫? – baranskistad

+0

如果您編寫了一個節點模塊,並將其發佈到npm,則永遠不會在該節點模塊中存儲憑據。任何需要該節點模塊的人都可以通過上面提到的方式提供證書。例如,在一個項目中,您可能需要'fb'節點模塊,您可以使用它來訪問Facebook SDK。這個模塊有一個'setAccessToken'函數,它允許你爲模塊提供證書來訪問某些SDK函數。 – Alan

+0

看看12factor.net。對於各種最佳實踐來說,這將非常有啓發性。 – Paul