限制对 Firebase 托管内容的访问
Restrict access to Firebase Hosting content
我正在 firebase 上构建一组 rest API。
我已经用 swagger(对于“外部”文档)和 jsdoc(对于“内部”文档)生成了文档。因此,从 jsdoc 中,我有一堆 HTML 页面要部署到 FB 托管上,但我想将对这些页面的访问限制为仅某些经过身份验证的用户。
对于动态内容,例如招摇生成,我很容易解决如下。
doc_fun.use(
'/rest',
basicAuth({
users: {'user': 'password'},
challenge: true,
}),
swaggerUi.serve,
swaggerUi.setup(swaggerSpec)
)
exports.docs = functions.https.onRequest(doc_fun)
我正在寻找(可能类似的)静态内容解决方案。类似于:
doc_fun.use(
'/jsdoc',
basicAuth({
users: {'user': 'password'},
challenge: true,
}),
express.static('public/jsdoc')
)
(这当然行不通)
您将在此官方云功能 sample 中找到您需要的一切,它展示了“如何验证对 JSON API 的访问以仅允许特定的数据访问Firebase 用户。
更准确地说,它展示了 Express 中间件如何“验证在授权 HTTP header 中传递的 Firebase ID 令牌”。
受雷诺最后一条评论的启发,我设法找到了一个简单的解决方法。
我 post 把它放在这里,也许它对其他人有用。
- 我将我的 'jsdoc' 文件夹及其所有 HTML 静态内容放在 'functions' 一个
中
- 我已将 express.static 路径参数设置为“./jsdoc”
index.js:
doc_fun.use(
'/jsdoc',
basicAuth({
users: {'user': 'password'},
challenge: true,
}),
express.static('./jsdoc') //current folder is 'functions'
)
firebase.json:
...,
"rewrites": [
...,
{
"source": "/docs/**",
"function": "docs"
}
],
...
现在 http://my_project.cloudfunctions.net/docs/jsdoc/
仅向经过身份验证的访问者提供我的静态内容。
我正在 firebase 上构建一组 rest API。 我已经用 swagger(对于“外部”文档)和 jsdoc(对于“内部”文档)生成了文档。因此,从 jsdoc 中,我有一堆 HTML 页面要部署到 FB 托管上,但我想将对这些页面的访问限制为仅某些经过身份验证的用户。
对于动态内容,例如招摇生成,我很容易解决如下。
doc_fun.use(
'/rest',
basicAuth({
users: {'user': 'password'},
challenge: true,
}),
swaggerUi.serve,
swaggerUi.setup(swaggerSpec)
)
exports.docs = functions.https.onRequest(doc_fun)
我正在寻找(可能类似的)静态内容解决方案。类似于:
doc_fun.use(
'/jsdoc',
basicAuth({
users: {'user': 'password'},
challenge: true,
}),
express.static('public/jsdoc')
)
(这当然行不通)
您将在此官方云功能 sample 中找到您需要的一切,它展示了“如何验证对 JSON API 的访问以仅允许特定的数据访问Firebase 用户。
更准确地说,它展示了 Express 中间件如何“验证在授权 HTTP header 中传递的 Firebase ID 令牌”。
受雷诺最后一条评论的启发,我设法找到了一个简单的解决方法。
我 post 把它放在这里,也许它对其他人有用。
- 我将我的 'jsdoc' 文件夹及其所有 HTML 静态内容放在 'functions' 一个 中
- 我已将 express.static 路径参数设置为“./jsdoc”
index.js:
doc_fun.use(
'/jsdoc',
basicAuth({
users: {'user': 'password'},
challenge: true,
}),
express.static('./jsdoc') //current folder is 'functions'
)
firebase.json:
...,
"rewrites": [
...,
{
"source": "/docs/**",
"function": "docs"
}
],
...
现在 http://my_project.cloudfunctions.net/docs/jsdoc/
仅向经过身份验证的访问者提供我的静态内容。