2015-10-04 165 views
1

我刚刚开始使用Firebase安全性,可能我错过了某些内容。我需要验证“通知”的路径(钥匙)后,15(稍后我会更新15使用匹配方法是正则表达式,但目前我正在努力执行这一简单的情况下):验证Firebase密钥

{ 
    "rules": { 
     ".write": true, 
     "notifications": { 
      "$year": { 
      ".validate": "newData.val() === '/15'",    
      } 
     } 
    } 
} 

我测试在以下模拟器:

/notifications/15 

数据我张贴:

{ "foo": "bar" } 

的火力地堡模拟器回报:

Attempt to write {"foo":"bar"} to /notifications/15 with auth={"provider":"anonymous","uid":"a5e08499-c41d-47d0-9df4-64d9af802755"} 
    /:.write: "true" 
     => true 
    /notifications/15:.validate: "newData.val() === '/15'" 
     => false 

Validation failed. 
Write was denied. 

回答

1

如果你正在给/notifications/15写一个值,那么newData.val()就是那个值,而不是关键。

我不认为有一种方法来动态地测试密钥。

+0

“我不认为有一种方法可以动态地测试密钥。”哦,我没有意识到,谢谢。 – SM79

+1

$ key.matches(/^[0-9] + $ /)呢?验证密钥似乎是完全可能的。 – Kato

+0

事实证明,密钥可以验证:http://stackoverflow.com/questions/32979432/validate-a-firebase-key-or-workaround/33021533 – SM79