2014-10-03 98 views
1

我想添加一个安全规则,以便用户只能编辑自己的个人资料失败:安全规则与火力地堡

"users": { 

    "$user_id": { 

     ".write": "$user_id == auth.uid", 

此规则通过在模拟器,但在现实生活中失败。我认为这可能是内部路径正在编码,即简单登录:1转换为简单登录%3A1,所以我尝试使用替换来匹配这种情况,但仍然无法正常工作。

 ".write": "$user_id == auth.uid.replace(':', '%3A')", 

任何想法我做错了什么?

+0

没有必要对uid进行编码,我使用'“.write”:“auth!= null && auth.uid == $ uid”'没有问题。您的规则也与https://www.firebase.com/docs/security/guide/user-security.html上的文档完全一致。当你说“这行不通”时,你的意思是什么? – 2014-10-03 15:23:18

回答

0

我有一个相同症状的问题,并经过一些调试后,我意识到规则是好的,真正的问题是我在客户端代码中使用的路径。

于是我就用非常相似的一个文档中的规则:

{ 
"rules": { 
    "users": { 
    "$uid": { 
     ".write": "$uid === auth.uid" 
    } 
    } 
} 

而且,如果我访问的路径是这样的:

ref = new Firebase('https://myfirebase.firebaseio.com/'); 
. 
. 
. 
ref.child('users/' + uid).set({... 

的作品就好了。