设置火力地堡数据库安全规则简单的应用程序

问题描述 投票:0回答:1

我使用火力地堡一个非常简单的purpose--刚刚创建的WordPress实时按钮上点击消失。有没有用户/认证。

我如何可以使防止有人与数据库篡改的安全规则,但允许按钮的工作?我知道最简单的方法是如何设置安全write": false,但随后由于火力地堡变量不能改变/更新按钮将无法正常工作。 Documentation似乎更直指与用户的应用程序,但似乎并提能够设置在读/写/等等对于某些路径限制。

也许我可以让这个只有用火力地堡路径/使用的变量可以更新?

var database = firebase.database();
//firebase queue

//**************
///timer fb
let timestamp;
let now = new Date().getTime();
let endTimeRef = firebase.database().ref("server");
let endTime;
let minutes;
let secondsDisplay;
let distance= endTime-now;
let buttonDisplay=  document.getElementById("queue");
let timerDisplay =  document.getElementById("timer_fb");
let message=        document.getElementById("timer_div");

function displayTimer(){
  
   minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
   secondsDisplay= Math.floor((distance % (1000 * 60)) / 1000);
      
   let s;
   if (minutes >= 1 || secondsDisplay >= 1) {
      if (minutes >= 1 && secondsDisplay >= 10) {
        s = "Time Until Next Person: " + minutes + ":" + secondsDisplay;
      } else if (minutes >= 1) {
        s = "Time Until Next Person: " + minutes + ":0" + secondsDisplay;
      } else {
        s = "Time Until Next Person: " + secondsDisplay + "s";
      }
    } else {
      s = "";
    }
    document.getElementById("timer_fb").innerHTML = s;
  
}

function setTimer() {
    let interval = setInterval(function() {
      
      now = new Date().getTime();
      distance= endTime-now;
      
      //update timer display
      displayTimer();
           
      if (distance <= 0) {  
        buttonDisplay.style.display = "block";
        timer_div.style.display = "block";
        document.getElementById("timer_div").innerHTML = "This session is open!";
        clearInterval(interval);
        timerState.set('off');
        endTimeRef.set(0);
           }
    }, 1000);
  }


//display timer
   

//state machine
let timerState = firebase.database().ref("timerState");

let timer;

timerState.on("value", function(snapshot) {
   
    timer= snapshot.val();
    if(timer == "on"){   
      buttonDisplay.style.display = "none"; 
      message.style.display = "none";
      endTimeRef.once("value", function(snap) {
      let endStamp  = snap.val();
        console.log("stored button snap value check: ", snap.val());
      now = new Date().getTime();  
     endTime= endStamp +100000;
     distance= endTime-now;    
            
     //show display right after button is pressed   
   displayTimer();
   setTimer(); 
    }); 
  }   
});



//********
//*****on click handler
document.getElementById("queue").onclick = function() {
  //hide button 
  buttonDisplay.style.display = "none"; 
  message.style.display = "none";
  
  //set time button comes back
     now = new Date().getTime();
     endTime= now + 100000;
     endTimeRef.set(now);
     
  //firebase state machine
  timerState.set('on');
  //setInterval handler, used for timer/countdown
  //need to wrap interval in function so that it can be reused 
};
firebase-realtime-database firebase-security-rules
1个回答
0
投票

我不明白你是什么意思只有使用火力地堡路径/使用可更新的变量?但是,如果你不使用验证你怎么区分哪些用户能够访问该值,用户可以not.Or你想使所有用户都可以读取只在某些情况下,可以修改这个值?

© www.soinside.com 2019 - 2024. All rights reserved.