【问题标题】:How is correctly way to send firebase auth tokenId between front-end and node.js backend如何正确地在前端和 node.js 后端之间发送 firebase auth tokenId
【发布时间】:2020-07-21 08:57:50
【问题描述】:

我正在创建一个聊天应用程序。我想找到一种使用 firebase auth 中的 TokenId 安全连接前端和后端的好方法。

  1. 我是否必须在从前端到后端的每个请求中发送一个 TokenId?
  2. 可以在会话或类似的情况下进行,我可以发送一次令牌并验证一次吗?

我现在的路。

我发送令牌的代码前端:

fetch('http://localhost:5500/check', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ token: token }),
  })
    .then(data => data.json())
    .then(e => console.log(e))
    .catch(err => console.log(err));
});

我像这样在前端获得令牌:

firebase.auth().currentUser.getIdToken(true)

我的代码后端验证令牌:

router.post('/check', urlencodedParser, (req, res) => {
  const {token} = req.body;

  admin
    .auth()
    .verifyIdToken(token)
    .then(function (decodedToken) {
      // let uid = decodedToken.uid;
      res.setHeader('Content-Type', 'application/json');
      res.send({status: 'Ok'});
    })
    .catch(function (error) {
      console.log(error);
      res.setHeader('Content-Type', 'application/json');
      res.send({status: 'err'});
    });
});

【问题讨论】:

    标签: node.js firebase firebase-authentication backend verification


    【解决方案1】:
    1. 我是否必须在从前端到后端的每个请求中发送一个 TokenId?

    这就是 Firebase 客户端和后端服务所做的事情:它们会随每个请求发送(并重新验证)ID 令牌。服务器缓存是解码令牌所需的公钥,但除此之外,关于用户/ID 令牌几乎是无状态的。

    1. 可以在会话或类似的情况下进行,我可以发送一次令牌并验证一次吗?

    您绝对可以将令牌保留在会话中,但这意味着您需要发送会话 ID 而不是令牌本身,并且必须为会话实施状态管理。

    【讨论】:

      猜你喜欢
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2018-11-02
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2016-07-31
      相关资源
      最近更新 更多