是否有针对firebase应用程序中受保护内容的适当授权规则的最佳实践方法
到目前为止我的一些研究:
方法1:秘密URL
我需要知道能够查看/编辑文档的URL
不是真正的授权,因为任何有权访问该URL的登录用户都可以编辑/修改它.
无法索引我有权访问的所有文档
方法2:使用firebase授权规则将用户添加到文档,并在读/写之前检查用户是否为document.users.
{
"documents": {
"$documents_id": {
// any friend can read my post
".read": "auth.id === data.child('owner').val() || root.child('users/'+data.child.owner.val()+'/users/'+auth.id).exists()",
// any friend can edit my post
".write": "auth.id === data.child('owner').val() || root.child('users/'+data.child.owner.val()+'/users/'+auth.id).exists()"
},
users:{
// List of user.ids that have access to this document
}
}
}
Run Code Online (Sandbox Code Playgroud)
优点:
缺点:
方法3: Firebase授权规则(方法2),以及每个用户都可以访问的document_ids数组的冗余用户存储.此用户存储仅用于查询用户有权访问的所有文档.即:
{
"documents": {
"$documents_id": {
// any friend can read my post
".read": "auth.id === …Run Code Online (Sandbox Code Playgroud) 我们想在我们的(主要是非Firebase托管的)项目中使用Firepad,但我们遇到了一些麻烦,找出解决问题的最佳方法.
基本上,我们有很多用户,每个用户都可以是许多组的成员.这些"组"每个都有自己的Firepad,用户可以编辑.我们已经使用MySQL开发了一个深度开发的数据库结构,并且现在不想将我们的用户数据迁移到Firebase,所以我们认为我们会更有创意.
我们不希望用户能够编辑他们不属于的组的Firepad.因此,作为我们的身份验证令牌的一部分,我们认为我们会尝试发送用户ID和他们所属的组列表.然后,使用Firebase JSON安全系统,我们可以验证当前正在编辑的Firepad是否在用户所属的组列表中.
问题是,JSON系统似乎不接受很多命令.有没有的indexOf,我不能打电话hasChild的auth变量.
我们如何确保用户只能编辑他们所属的群组的Firepad,而无需将所有数据迁移到Firebase?(或者维护数据库的两个副本 - 一个在MySQL上,一个在Firebase上)
我正在cypress为 Codemirror Editor编写一些测试。我已经cypress习惯在输入字段中输入。
我正在尝试cy.type()在 CodeMirror 编辑器中实现。我在 codemirror 中的数据在跨度内。
<pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> < h1 > Welcome to your web project canvas! < /h1></span></pre>
Run Code Online (Sandbox Code Playgroud)
cypress 规范代码 cy.get('pre.CodeMirror-line') .type('Cypress HTML Data')
我无法使用 cypress 输入一些数据。
如果有人可以提供帮助,我将不胜感激?
我启动了这个小项目,在那里我将使用CodeMirror对代码进行实时协作.
我有一个msgs系统设置,因此很容易将对象从一个用户传递到另一个用户.我的问题是它与CodeMirror集成.我发现它有onchange的事件和replaceRange(string,from,to).
我将onchange对象传递给其他用户并使用replaceRange更新视图.问题是当使用replaceRange时,它会触发一个新的onchange并且它会前后发送msgs.任何人都知道是否有某种更新本地视图的方法,而不会触发onchange.或建议采取其他途径.(msgs系统已经设置好,并且很容易将javascript对象传递给其他客户端).