ayu*_*hgp 6 firebase firebase-hosting firebase-authentication firebase-realtime-database firebase-security-rules
我在Firebase托管上托管了一个静态应用,其后端也在Firebase上(使用firebase JS api进行通信)。我想向该网站的所有页面添加一个简单的身份验证页面,以便只有我想要的用户才能访问该网站。这可能吗?
查看了文档,但没有找到任何可以帮助我的方面。
Firebase 托管无法限制对网站静态资源(HTML、CSS、JavaScript)的访问。请参阅Firebase 托管能否限制对资源的访问?、 Firebase 托管 - 仅限会员/安全网页?。
但是,如果您的网站提供动态内容(例如,通过 JavaScript 从 Firebase 数据库加载数据,或将图像上传到 Firebase 存储),您可以使用 Firebase 身份验证以及这些产品的服务器端安全规则(数据库、存储)来确保用户只能采取他们被授权的行动。
您可以使用Firebase Functions和Express调用来执行此操作。将所有静态文件放入一个名为的文件夹functions/admin,并将此函数放入functions/index.js:
exports.admin = functions.https.onRequest((req, res) => {
const url = req.originalUrl ? req.originalUrl : '/index.html' // default to index.html
res.sendfile('admin' + url)
})
Run Code Online (Sandbox Code Playgroud)
然后,向您的功能服务器发出的请求/admin/*将提供相同名称的文件。
如果要添加授权,请尝试以下操作:
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)
}
})
Run Code Online (Sandbox Code Playgroud)
您将必须进行定义,get_user()以便它返回带有is_admin字段的用户对象。
| 归档时间: |
|
| 查看次数: |
4581 次 |
| 最近记录: |