限制访问Firebase Hosting内容

efzxgjgh  于 2023-11-21  发布在  其他
关注(0)|答案(2)|浏览(117)

我正在firebase上构建一组rest API。我已经用swagger(用于“外部”文档)和jsdoc(用于“内部”文档)生成了文档。因此,从jsdoc,我有一堆HTML页面,我想部署到FB托管,但我想限制访问这些页面的权限,只有一些经过身份验证的用户。
对于动态内容,例如swagger-generated,我很容易解决如下问题。

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')
)


(当然,这是行不通的)

shstlldc

shstlldc1#

您将在此官方Cloud Functions sample中找到所需的一切,其中显示了“如何对JSON API的访问进行身份验证,以仅允许访问特定Firebase用户的数据”。
更准确地说,它展示了Express中间件如何“验证在授权HTTP头中传递的Firebase ID令牌”。

kxkpmulp

kxkpmulp2#

受Renaud最后一条评论的启发,我设法找到了一个简单的解决方法。
我把它写在这里,也许它对其他人有用。

  • 我把我的'jsdoc'文件夹与所有的HTML静态内容内'函数'一个
  • 我已经将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/只向经过验证的访问者提供我的静态内容。

相关问题