身份验证的架构和思考

时间:2019-11-27 18:09:27

标签: javascript node.js angular firebase firebase-authentication

我正在设计一个新的Angular SPA,鉴于FireBase已经在前端对我的用户进行了身份验证,我对后端在其中执行的操作感到困惑,并且该操作应该实例化某种形式的用户会话?

在这里我的想法崩溃了:

  1. 按下登录按钮
  2. 将用户名和密码发送到Firebase
  3. Firebase将带有令牌字符串的回复发送回我的前端
  4. 将此字符串发布到我自己的后端
  5. (为什么要在这里验证此令牌?)但是我使用Firebase-admin npm软件包验证了此令牌
  6. 加密“东西”
  7. 将“内容”发送回前端,以便在LocalStorage中对用户进行身份验证

在考虑身份验证时,我的过程在这一点上破裂了。我的老板说后端应该永远是无状态的,所以...

在第5步之后,我该如何加密回客户端,还有什么我想念的东西?

///////////////////////////
///////////////////////////
///////////////////////////

后代编辑:

对我来说,困惑在于混合抽象级别,特别是抽象了从一个登录页面开始就创建会话的想法。当我开始将会话视为不是由一个组件管理的东西,而是一个将用户与多个组件交互的状态进行包装的过程时,我得到了最大的好处。

1 个答案:

答案 0 :(得分:2)

Firebase身份验证自动在内部管理ID令牌。如果您希望用户调用某些后端API,但只有在允许的情况下,您应该做的是get that token from the client SDK,将其发送到带有请求的后端,然后后端使用Firebase Admin SDK每次通话时verify that token

该链接文档具有代码示例,以更详细地说明其如何在不同的客户端和服务器平台上工作。