2011-02-28 14 views
0

請考慮這種情況。我們有一個內部的Rails 2應用程序,它使用Savon(Ruby SOAP庫)連接到供應商網站。連接依賴於使用用戶名和密碼的身份驗證。密碼每30天更改一次。現在 - 開發人員每隔30天必須前往供應商的網站,更新密碼,然後返回到我們的內部導航應用程序,更新密碼,將應用程序推送到網絡服務器並重新啓動乘客。ActiveRecord是否存在將密碼存儲到供應商網站的矯枉過正?

我們將密碼作爲CONSTANT存儲在環境文件中,還有一些特定於Web的常量。我們希望將此責任卸載到客戶服務經理,以便她每30天更新密碼,在應用程序中轉到一個小表格並更新密碼。

什麼是存儲該密碼的最佳方式?我們顯然不能在環境文件中執行CONSTANT,並繼續重新加載應用程序。但同時創建一個模型來存儲一個單獨的表中的密碼看起來像一個矯枉過正的,也因爲應用程序的一部分,向廠商網站發出請求 - 每天約1000個請求,並且需要非常快,這意味着將該密碼存儲在表中時,每次發出請求時都需要額外的查詢。當然,對於我們的音量來說,這不是什麼大問題,但從理論上講,除了現在做我們現在要做的,在應用程序啓動時將其加載到內存中,這個問題最好的有效解決方案是什麼?

回答

2

將(加密的)密碼存儲在平面文件中。通過信號重新加載文件,或通過驗證失敗,或者自上次重新加載並且文件的時間戳發生更改後超過10秒鐘。將此邏輯包裝成一個像.getCredentials()這樣的單一方法。大多數情況下,它只會返回緩存的登錄名和密碼值。

將此存儲在適當的數據庫中看起來對我來說太過矯枉過正。

相關問題