首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >firebase主机的身份验证

firebase主机的身份验证
EN

Stack Overflow用户
提问于 2018-02-13 03:07:27
回答 3查看 8.9K关注 0票数 11

我有一个静态应用程序托管在Firebase主机上,其后端也在firebase上(使用firebase JS api进行通信)。我想添加一个简单的认证页面到这个网站的所有页面,以便只有我想要的用户可以访问这个网站。这个是可能的吗?

我看了文档,但没有找到任何对我有帮助的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-30 04:34:05

您可以使用Firebase函数和Express调用来完成此操作。将所有静态文件放入名为functions/admin的文件夹中,并将此函数放入functions/index.js

代码语言:javascript
运行
复制
exports.admin = functions.https.onRequest((req, res) => {
  const url = req.originalUrl ? req.originalUrl : '/index.html'  // default to index.html
  res.sendfile('admin' + url)
})

然后,向函数服务器发出的/admin/*请求将提供同名的文件。

如果要添加授权,请尝试执行以下操作:

代码语言:javascript
运行
复制
exports.admin = functions.https.onRequest(async (req, res) => {
  const url = req.originalUrl ? req.originalUrl : '/index.html'
  const user = await get_user(req)  // get the current user
  if (user && user.is_admin)        // is current user an admin?
    res.sendfile('admin' + url)
  else {
    res.status(403).send(null)
  }
})

您必须定义get_user(),以便它返回一个带有is_admin字段的user对象。

票数 12
EN

Stack Overflow用户

发布于 2018-02-13 03:12:25

Firebase主机无法限制对站点的静态资源(HTML、CSS、JavaScript)的访问。参见Can Firebase hosting restrict access to resources?Firebase Hosting - Members Only / Secured Webpages?

但是,如果您的站点提供动态内容(例如loads data from the Firebase Database from JavaScriptuploads images to Firebase Storage),您可以使用Firebase Authentication以及这些产品的服务器端安全规则(databasestorage)来确保用户只能执行授权的操作。

票数 5
EN

Stack Overflow用户

发布于 2018-02-13 03:12:36

这可以通过向您的Firebase数据库添加规则来完成,为了只允许经过身份验证的用户进入网站,您可以使用以下命令:

代码语言:javascript
运行
复制
// These rules require authentication
{
 "rules": {
   ".read": "auth != null",
   ".write": "auth != null"
 } 
}

您可以使用以下命令:

代码语言:javascript
运行
复制
 {
 "rules": {
   "admin": {
       "$uid": {
          ".write": "$uid === auth.uid"
      }
    }
  }
}

使用上面的方法,您将只允许admin节点下的用户(他们必须经过身份验证)写入数据库,其他任何人都不能。

更多信息请点击此处:https://firebase.google.com/docs/database/security/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48753740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档