我正在使用Ember.js编写应用程序,后端/服务器端是基于Node.js服务器的。 我已经配置了Ember.js,以便用户可以使用第三方OAuth(Google、Twitter、Facebook)进行登录/注册。 我编写了一个基于Express的Node.js后端服务器来托管RESTful API。
由于Ember.js严格限制只能在客户端代码中运行,因此我没有将数据库连接到Ember.js上,并且我认为我不应该这样做。 我计划使用JWT来在客户端和服务器端之间通信。当用户使用他们的OAuth凭据登录时,我会从提供者那里收到一个JSON对象,其中包含uid、姓名、登录名、access_token和其他详细信息。
我正在考虑如何处理用户注册流程。由于OAuth不存在注册过程,所以如果用户不存在我的数据库中,就需要创建一个新用户。 我不支持电子邮件/密码认证。 用户第一次使用OAuth提供程序登录时应采取什么流程?Ember.js是否应该在每次登录时将所有详细信息发送到后端,以便后端可以将新用户添加到数据库中?
我的JWT载荷应包含哪些部分?我正在考虑使用UID和提供商提供的访问令牌。这里可能存在一个问题,即特定于提供程序的访问令牌可能会更改。用户可以从提供者的站点中撤销令牌,然后再次使用Ember.js进行注册。
如果使用其他JavaScript客户端框架编写前端可以更容易实现,则我愿意尝试更改。