我目前使用的是Firebase函数v1.0.3
和Firebase管理v5.12.1
。它似乎与express
NodeJS库一起工作得很好。
问题
但是,当我试图通过发送Authorization头来保护请求时:
Authorization: Bearer <token>
它没有显示我的令牌的任何日志。当我在我的Firebase函数index.js
文件中使用console.log(request)
来获取token
时,我看不到任何与Bearer
或Authorization Bearer
(无论什么)匹配的单词。
当我使用console.log
时,我从req.headers
得到的是以下内容
{ 'content-length': '0',
'accept-language': 'en-US,en;q=0.9',
'accept-encoding': 'gzip, deflate, br',
referer: 'http://localhost:5000/admin/',
accept: '*/*',
'access-control-request-headers': 'authorization,content-type',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
origin: 'http://localhost:5000',
'access-control-request-method': 'GET',
connection: 'close',
host: 'localhost:5001'
}
文档源
我读过一篇关于Firebase Functions Samples: Authorized HTTPS Endpoint示例代码的文档,其中一些似乎已经过时了。
firebase.auth().currentUser.getToken()
例如,现在是:
firebase.auth().currentUser.getIdToken()
Other Libaries
我尝试过安装诸如express-authorization-bearer
和express-bearer-token
之类的库,但仍然无法捕获idToken
。
我想知道这是NodeJS的问题还是Firebase函数的问题。我当前使用的是NodeJS v6.11.4
问题
如何使用Express或任何使用NodeJS的方法捕获Firebase函数中的令牌?
发布于 2018-05-31 09:29:47
授权载体起作用了。以下是I console.log(req.headers)
时的结果
{ 'accept-language': 'en-US,en;q=0.9',
'accept-encoding': 'gzip, deflate, br',
referer: 'http://localhost:5000/admin/',
accept: '*/*',
'content-type': 'application/json',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
origin: 'http://localhost:5000',
authorization: 'Bearer something',
connection: 'close',
host: 'localhost:5001' }
在本例中,token
为something
重要说明:
req.headers.authorization
不能与Assigning Multiple Origins一起工作,因为它给出了错误Cannot set headers after they are sent
,但它应该很容易工作,因为它允许任何来源,并将cors
作为中间件:var cors = require('cors')({origin: true}); app.use(cors);
req.headers.authorization
已经对其进行了保护,不能将anyway.
req.headers.authorization
分配给参数,否则它将变成来自Authorized HTTPS Endpoints的相同文档,只有完全启用cors
、cookies
undefined
cookie-parser
插件和req.headers.authorization
并将其发送到firebase-functions
端点时,它才能完全工作。https://stackoverflow.com/questions/50501861
复制相似问题