2017-10-05 101 views
0

我已經使用MySQL DB創建了示例WEB API。其中使用的認證是Basic Authentication。身份驗證是基於用戶的,因爲我在其中創建了一個用戶表,並將其轉換爲64位編碼,並將其與用戶的用戶名和密碼進行匹配。使用多個數據庫的Web API認證

現在我想創建一個實際的WEB API。 MySQL中有兩個數據庫。將使用數據庫1創建WEB API。該請求將從具有數據庫2的android應用程序發送。現在主要討論的是Authentication的觀點。據我研究Retrofit是Android應用程序開發中驗證的最佳方法之一。現在,爲了進行身份驗證,用戶信息位於DB1(從中創建應用程序),並且它將在DB2上創建的WEB API上創建。如果數據庫是單一的,那麼這對我來說不會有什麼問題,但只要有兩個數據庫,就有一些問題。

我該怎麼辦?

  1. 所有用戶數據複製到DB2並生成驗證。 這一步將很簡單,但實時用戶會讓我更多,所以我必須一次又一次地複製所有數據。

  2. DB2中創建一個虛擬用戶,並在使用它時通過所有的身份驗證。

  3. 在我的WEB API項目中使用這兩個數據庫。使用DB1來驗證並驗證它,驗證後再允許訪問WEB API。我不確定這種方法是如何工作的。

任何幫助將不勝感激。

回答

0

我不明白你爲什麼需要2個API,但你總是可以讓他們互相交談,這也意味着更多的API調用,所以你最好有一個理由使用兩個API。

當您獲取用戶名和密碼(或電子郵件)時,您需要嘗試將其與您在API中存儲的密碼進行匹配,以便您可以將所有用戶信息存儲在包括用戶名和密碼的位置,或者可以調用身份驗證API每次你需要通過http請求認證一個用戶,這意味着服務器正在呼叫服務器等待他作出響應,然後在有效認證時向用戶提供他的響應

+0

沒有API將只有一個,它只會使用'DB2'創建。我的問題再次是身份驗證,我如何驗證它,因爲請求將通過移動應用程序生成。該應用程序也有一些API,但它們都在相同的'DB'下,並且當從應用程序調用時,用戶名的'auth Key'被傳遞到標題中。同樣,這一切都在同一個'DB'下工作,但這裏的條件是不同的,因爲我使用其他數據庫來創建API,所以我如何驗證它? – faisal1208

+0

您正在與android本地應用程序通信的事實不應該影響身份驗證過程。我仍然不明白這個問題,你有一個身份驗證過程,它使用密碼和用戶名參數來調用API,對吧? –

+0

讓我們不要混合的東西。首先,我們只會瞭解該應用程序的工作原理。該應用中有幾個API。這是基於本機的android,'PHP'被用作後端。每當調用「API」時,它都會將身份驗證發送到同一臺服務器和同一個數據庫,並從中獲取響應。 – faisal1208