当前位置: 首页 > 知识库问答 >
问题:

如何从React with Firebase Auth向Expressjs发送身份验证令牌

邵飞宇
2023-03-14

您好,我正在尝试使用React、Express和Firebase创建一个具有身份验证的项目。在创建身份验证的过程中,我不知道为什么这种发送身份验证令牌的方式对我不起作用

import axios from 'axios'
import { auth } from '../firebase/firebase'

var config = {
   baseURL: "http://127.0.0.1:5000/",
   timeout: 5000,
}
auth.onAuthStateChanged(user => {
   user.getIdToken(true)
      .then((token) => {
         // I have tried this too, unfortunately same results
         // axios.defaults.headers.common['Authorization'] = `Bearer ${token}`

         config.headers = {
            authorization: token
         }
      })
      .catch(err => {
         console.log(err)
      })
})

console.log(config)
export default axios.create(config)

当我检查控制台中配置的值时,我得到的是:

      {
         "baseURL": "http://127.0.0.1:5000/",
         "timeout": 5000,
         "headers": {
             "authorization": "##AUTH TOKEN HERE##"
         }
     }
   

然而,当我检查我的req.headers在我的快递应用程序,这是我得到的:

      {
         host: '127.0.0.1:5000',
         connection: 'keep-alive',
         'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"',
         accept: 'application/json, text/plain, */*',
         'sec-ch-ua-mobile': '?0',
         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36',      
         origin: 'http://localhost:3000',
         'sec-fetch-site': 'cross-site',
         'sec-fetch-mode': 'cors',
         'sec-fetch-dest': 'empty',
         referer: 'http://localhost:3000/',
         'accept-encoding': 'gzip, deflate, br',
         'accept-language': 'en-US,en;q=0.9',
         'if-none-match': 'W/"770-rnaTbTjcnfFuL5mkxjLb7fT1wEU"'
       }
   

如果有任何方法可以使用我使用的工具向后端发送身份验证令牌,请告诉我。任何帮助将不胜感激。

共有1个答案

祁驰
2023-03-14

正如@Doug所提到的,Firebase API是异步的,因此您的API请求很有可能在获得ID令牌之前运行。相反,我建议在调用API的函数中获取ID Token,如下所示:

asnyc function callMyAPI() {
  const token = await firebase.auth().currentUser.getIdToken()
  // Write Axios Request here
  // Add the authorization header here
}
 类似资料:
  • 问题内容: 我想从我的API请求资源时发送身份验证令牌。 我确实使用$ resource实现了服务: 我有一个存储身份验证令牌的服务: 我想通过服务发送的每个请求都发送令牌。通过将其放入特定动作的调用中,我能够发送它。例如,这有效: 但是我宁愿将access_token定义为服务中的参数,因为它必须随每个调用一起发送。并提高干度。但是工厂中的所有内容仅执行一次,因此access_token在定义工

  • 我试图在PhantomJS中打开一个需要HTTP身份验证的网页。我的脚本基于loadspeed.js示例: 我可以从渲染的page.jpg中看到,我每次都得到401分。我还使用Wireshark跟踪了HTTP会话,这表明GET请求中没有向给定URL发送身份验证标头。 我到底做错了什么?我刚刚开始使用PhantomJS,但我整个晚上都在寻找,没有走远...

  • 在Wordfence文档中说: 过滤器“wordfence_ls_require_captcha”可用于在您选择的情况下禁用captcha。这对于包含RESTendpoint的插件可能很有用,这些endpoint具有不需要captcha的身份验证。必要时,您的过滤器应返回false以绕过captcha要求,或者在需要CAPTCH时返回true 如果我尝试通过JWT进行API调用,我会通过电子邮件收

  • 我有一个LaravelAPI(实际上是LumenAPI)服务于VueJS前端。Vue应用程序允许用户登录到谷歌。然后将Google令牌发送回Lumen API,后者使用Google验证令牌,然后验证电子邮件地址是否为有效用户。然后它生成一个令牌,与用户一起存储在数据库中,并返回用户对象。 我没有使用Passport或jwt auth之类的东西。那么现在,我如何使用默认的Auth中间件来验证(现在已

  • 我试图将用于需要基本HTTP身份验证的第三方服务。我正在使用。以下是我到目前为止的结论: