标签: firepad

适用于firebase中受保护内容的授权规则

是否有针对firebase应用程序中受保护内容的适当授权规则的最佳实践方法

  • 特别使用firepad
  • 受保护的内容我指的是用户创建文档的位置,并且只与某些其他用户共享.
  • 此外,我需要能够查询firebase以查找我有权访问的所有文档(我创建的文档和其他用户与我共享的文档)

到目前为止我的一些研究:

方法1:秘密URL

  • 我需要知道能够查看/编辑文档的URL

  • 不是真正的授权,因为任何有权访问该URL的登录用户都可以编辑/修改它.

  • 无法索引我有权访问的所有文档

方法2:使用firebase授权规则将用户添加到文档,并在读/写之前检查用户是否为document.users.

取自: Firebase中的受保护内容可能吗?

{

"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)

security authentication authorization firebase firepad

26
推荐指数
1
解决办法
9898
查看次数

Firebase JSON安全和阵列

我们想在我们的(主要是非Firebase托管的)项目中使用Firepad,但我们遇到了一些麻烦,找出解决问题的最佳方法.

基本上,我们有很多用户,每个用户都可以是许多组的成员.这些"组"每个都有自己的Firepad,用户可以编辑.我们已经使用MySQL开发了一个深度开发的数据库结构,并且现在不想将我们的用户数据迁移到Firebase,所以我们认为我们会更有创意.

我们不希望用户能够编辑他们不属于的组的Firepad.因此,作为我们的身份验证令牌的一部分,我们认为我们会尝试发送用户ID和他们所属的组列表.然后,使用Firebase JSON安全系统,我们可以验证当前正在编辑的Firepad是否在用户所属的组列表中.

问题是,JSON系统似乎不接受很多命令.有没有的indexOf,我不能打电话hasChild的auth变量.

我们如何确保用户只能编辑他们所属的群组的Firepad,而无需将所有数据迁移到Firebase?(或者维护数据库的两个副本 - 一个在MySQL上,一个在Firebase上)

firebase firepad

7
推荐指数
1
解决办法
1553
查看次数

如何在 codemirror 编辑器中使用 cypress .type() 键入?

我正在cypress为 Codemirror Editor编写一些测试。我已经cypress习惯在输入字段中输入。

我正在尝试cy.type()在 CodeMirror 编辑器中实现。我在 codemirror 中的数据在跨度内。

<pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &lt; h1 &gt; Welcome to your web project canvas! &lt; /h1&gt;</span></pre> 
Run Code Online (Sandbox Code Playgroud)

cypress 规范代码 cy.get('pre.CodeMirror-line') .type('Cypress HTML Data')

我无法使用 cypress 输入一些数据。

如果有人可以提供帮助,我将不胜感激?

codemirror firepad cypress

7
推荐指数
1
解决办法
1259
查看次数

与CodeMirror实时协作

我启动了这个小项目,在那里我将使用CodeMirror对代码进行实时协作.

我有一个msgs系统设置,因此很容易将对象从一个用户传递到另一个用户.我的问题是它与CodeMirror集成.我发现它有onchange的事件和replaceRange(string,from,to).

我将onchange对象传递给其他用户并使用replaceRange更新视图.问题是当使用replaceRange时,它会触发一个新的onchange并且它会前后发送msgs.任何人都知道是否有某种更新本地视图的方法,而不会触发onchange.或建议采取其他途径.(msgs系统已经设置好,并且很容易将javascript对象传递给其他客户端).

codemirror firebase firepad

5
推荐指数
2
解决办法
1980
查看次数