2017-04-05 204 views
0

我想通過GithubFacebook登錄到我的單頁網絡應用程序,服務器在我的控制之下。哪裏存儲client_id和client_secret在Oauth2?

在本教程中 https://spring.io/guides/tutorials/spring-boot-oauth2/ 它們存儲在一個文件中client_idclient_secret

如果我將這2個存儲在我的後端數據庫中不是更方便嗎? 假設某個不是程序員的人想要將Web應用程序註冊到新服務,他可以輕鬆地打開database,他不必爬到後端項目代碼中。

如果不是那麼這兩個應該存儲在哪裏?

+1

是的,你必須在數據庫中存儲clientID和clientSecret。他們只是代表你的單頁網頁應用程序在Facebook中,並用於生成訪問令牌,這個訪問令牌將由用戶使用他們的用戶名和密碼的Facebook。 –

+0

所以他們將這兩條信息存儲在一個文件中的教程僅僅是一個例子,並不是一個真正的實用的? – Oleg

+0

我想不同意@ AnuragDadheech的評論。我知道信用存儲在屬性文件中的多個生產系統。主要是因爲方便。唯一的問題是不同的環境有不同的屬性文件。說出application-dev.properties,application-stating.properties。默認的application.properties用於生產系統。 – Yasin

回答

1

如果您談論便利性,將它們存儲在屬性文件中是一個不錯的選擇。通過這樣做,這些屬性可以在啓動過程中輕鬆加載到應用程序中。如果您更改了這些值,您只需重新啓動應用程序即可反映新值。

我不知道我理解你的非程序員相關評論100%。但是,對於非程序員來說,IMO修改文件比修改數據庫要容易得多。

爲了更清楚起見,客戶端ID和客戶端密鑰代表您在社交媒體上註冊的應用程序的憑據(如Facebook)。

Ans是的,你也可以將它們存儲在數據庫中。但是,您需要編寫代碼從數據庫中獲取這些值並加載到您的應用程序中。

+0

關於非程序員,我想問一下是否有辦法編寫處理任何類型的社交登錄的代碼,因爲在本教程中有獨立的java代碼處理github和facebook,所以當我想註冊我的網絡應用程序到一個新的服務,如新聞,這意味着我必須添加新的代碼到我的後端服務器。這對我來說似乎很痛苦。 (我這是第一次這樣做,所以它不是很明顯,我該怎麼做:) – Oleg

+1

因此,無論您存儲憑據的位置,您將不得不編寫額外的代碼來支持額外的社交媒體。我想不出任何可能的方式,你只需添加額外的憑證,一切正常。如果這是一種痛苦,那意味着你正在改善:) – Yasin