【问题标题】:Firebase: restrict a child's write access to browser session that created itFirebase:限制孩子对创建它的浏览器会话的写访问权限
【发布时间】:2014-06-21 00:09:38
【问题描述】:

如何将 Firebase 中对象属性的写入权限限制为使用 ref.push() 创建它的浏览器会话?我希望所有客户都可以读取/buttonClicksByBrowserSession 的孩子,就像我在下面的安全规则中所做的那样,我希望客户能够将孩子推送到/buttonClicksByBrowserSession 并对其进行编辑,但我希望对那个孩子进行编辑浏览器刷新后禁用。

我的 Firebase 安全规则:

{
    "rules": {
        ".read": false,
        ".write": false,
        "buttonClicksByBrowserSession": {
          ".read": true,
          "$autoGeneratedID": {
            ".write": "newData.isNumber() && (data.val() == null && newData.val() === 1 || newData.val() - data.val() === 1")
          }
        }
    }
}


我的 JS:

var fbRef = new Firebase('https://fbKey.firebaseIO.com/buttonClicksByBrowserSession');
var numClicksRef = fbRef.push();
var numClicks = 0;

button.addEventListener('click', function() {
    numClicksRef.set(++numClicks);
});

【问题讨论】:

    标签: javascript firebase firebase-security


    【解决方案1】:

    利用anonymous login,它允许您为用户分配一个可在安全规则中使用的每个会话的唯一 ID。

    var fb = new Firebase(URL);
    var auth = new FirebaseSimpleLogin(fb, function(err, user) {
       if( err ) throw err;
       if( user ) init(user);
    });
    
    function init(user) {
       fb.child('buttonClicksByBrowserSession/'+user.uid).transaction(function(currValue) {
          return (currValue||0)+1;
       });
    }
    
    auth.login('anonymous', {rememberMe: false});
    

    安全规则:

    "buttonClicksByBrowserSession": {
        ".read": true,
        "$autoGeneratedID": {
           ".write": "auth.uid === $autoGeneratedID",
           ".validate": "newData.isNumber() && newData.val() === (data.val()||0)+1"
        }
    }
    

    【讨论】:

      【解决方案2】:

      对于这个功能,我想我会在页面初始化中做一个简单的注销/登录 - 每次刷新都获取一个新的用户 ID。

      然后以 userid 作为最终键保存数据,并使用规则限制对该 id 的用户的写入...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-17
        • 2020-08-11
        • 1970-01-01
        • 2014-05-01
        • 1970-01-01
        • 2015-03-15
        • 2022-01-13
        • 1970-01-01
        相关资源
        最近更新 更多