【发布时间】:2019-10-30 08:28:33
【问题描述】:
所以我只有一个单页前端应用程序。现在我有这样的东西
// db.js
import firebase from "firebase/app"
import "firebase/firestore";
var firebaseConfig = {
...
};
export const db = firebase
.initializeApp(firebaseConfig)
.firestore();
在 main.js 中,我尝试将 db 实例放在全局窗口范围内,只是为了看看是否可以转到 chrome Web 控制台并访问它以提交文档,并且确实可以
// main.js
import { db } from './db'
window.db = db;
然后从 chrome 控制台
db.collection("test").add({'somekey': 'Can I add this doc?'})
如果没有真正的后端来检查身份验证,我如何防止有人这样做?我喜欢 vue + firebase 的反应性。如果我不将 db 变量公开到全局范围就足够了吗?我正在阅读这篇文章:
https://forum.vuejs.org/t/how-to-access-vue-from-chrome-console/3606/2
因为您在 main.js 字段中创建的任何变量仍将由于 webpack 的方式而无法全局使用
【问题讨论】:
-
从不同的模块文件执行所有数据库访问。可以是一个普通的 javascript 文件。但是将其放在该模块的模块范围
db中。将 CRUD 操作放在模型或实体类中是一种常见的设计模式。 -
@RandyCasburn 这不安全。绝对不能在客户端进行安全保护。
-
@crysxd - 当然不是 - 我正在解决“全局”与范围变量问题。没有办法保护来自客户端(浏览器或其他)对 API 端点的恶意使用。 c
-
@RandyCasburn 当然。我只是想防止有人将您的建议作为问题的解决方案
标签: javascript firebase vue.js scope google-cloud-firestore