我正在创建一个使用 Firebase 作为数据存储、实时更新以及托管的后端的 Web 应用程序。
将大多数东西移动到客户端是非常巧妙的,但安全问题是一个需要解决的重要问题。
为了访问 Firebase 上的数据,Firebase 安全规则会处理大多数事情。但是,当使用 Firebase 进行托管时,我觉得访问某些路由缺乏安全性。
目前,在页面加载时,我可以检查用户是否已登录。如果用户未登录(或者身份验证令牌无效),我可以将用户重定向到不同的页面(即登录页面)。但是,我的问题是,如果该页面上的静态 html 中嵌入了我不希望未经授权的用户看到的信息怎么办?
我觉得我收到的第一个答案是,“数据应该保存在 Firebase 变量中,并且只有在授权成功时才加载。” 虽然这是一个有效的选择,但我认为将 HTML(甚至只是文本段落)存储为 Firebase 变量是很笨拙的,应该有更好的方法。
最初我认为这将是firebase.json
文件中的一个固有选项,因为可以定义重定向、标头等。但是,firebase.json
安全性(如 in firebase-security.json
)中没有任何内容可以让我执行如下auth
检查:
{
"firebase": "myfirebase",
"public": "app",
"ignore": [],
"rules": "config/security-rules.json",
"routes": [ {
"source" : "/for_authorized_only/",
"destination": "/authorized_page.html",
"auth": true, //Must be authorized
}, {
"source": "/some_public_route",
"destination": "index.html",
"auth": false, //No auth required to access this page
} ]
}
我没有尝试过 AngularJS 或 AngularFire,但经过一番搜索后,似乎 angularFire-seed 项目包含路由安全性,但这应该包含在 Firebase 中,而不是依赖于另一个框架!
有什么我正在寻找的东西可以让我完成这个吗?