代码之家  ›  专栏  ›  技术社区  ›  atkayla

如何获取JWT并将其传递给服务器?

  •  0
  • atkayla  · 技术社区  · 7 年前

    我使用的是React Native Firebase Auth,但是我的用户配置文件实际上存储在我的关系数据库中。因此,我映射了Firebase uid=>PostgreSQL integer-id(考虑只使用uid来保持简单,而不是映射到我自己数据库中的id)?

    uid , refresh_token 等等。

    我应该如何获取并将此用户的令牌传递到我的后端Node.js服务器以获取他们的配置文件?只是好像有 刷新\u令牌

    uid编号 Firebase Auth提供给我的后端服务器,假设这是“足够安全的”,因为他们从登录获得它。这足够吗?我觉得我应该传递一些令牌->在服务器上解码->获取uid?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Salakar    7 年前

    getIdToken() 检索当前登录的用户JWT。例如,您的客户:

    if (firebase.auth().currentUser) {
      const token = await firebase.auth().currentUser.getIdToken();
      // do something with token - e.g. send as a header with your api requests
    }
    

    然后,通过admin sdk在后端代码上检索令牌头并验证令牌和用户是否存在,例如,对于节点admin sdk,ExpressJS中间件可能类似于:

    module.exports = async function (req, res, next) {
      const { token } = req.headers;
    
      if (!token || !token.length) return next();
    
      // validate JWT and pluck user id
      const { uid } = await firebase.auth().verifyIdToken(token);
      // find the user based on id
      const user = await firebase.auth().getUser(uid);
    
      if (user) {
        // keep an instance of the User class on this request
        req._user = user;
        // raw serializable version of the user for request debugging?
        req.user = user.toJSON();
      }
      
      // TODO if (!user) res.send('Unauthorised');
    
      return next();
    };

    https://rnfirebase.io/docs/v5.x.x/auth/reference/User#getIdToken

    推荐文章