2017-04-05 62 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