我正在为糖尿病患者申请。我已经设法创建注册用户按钮,它可以工作,但我还想要一个新的管理员添加到系统。问题是在管理员登录页面,普通用户也可以登录。我该如何实现这个......我需要帮助吗?
document.getElementById("btnSignUp").addEventListener('click', e=>{
const userEmail = document.getElementById("email_field").value;
const userPass = document.getElementById("password_field").value;
firebase.auth().createUserWithEmailAndPassword(userEmail, userPass).catch(function(error) {
console.log(error.message);
});
})
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
//window.location = 'main.html'
document.getElementById("user_div").style.display = "block";
document.getElementById("login_div").style.display = "none";
var user = firebase.auth().currentUser;
if(user != null){
var email_id = user.email;
document.getElementById("user_para").innerHTML = "Welcome User : " + email_id;
}
} else {
// No user is signed in.
document.getElementById("user_div").style.display = "none";
document.getElementById("login_div").style.display = "block";
}
});
function login(){
var userEmail = document.getElementById("email_field").value;
var userPass = document.getElementById("password_field").value;
firebase.auth().signInWithEmailAndPassword(userEmail, userPass).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
window.alert("Error : " + errorMessage);
// ...
});
}
function logout(){
firebase.auth().signOut();
window.location='index.html'
}

答案 0 :(得分:1)
以下是一种声明具有特定角色的特定用户的方法,例如“admin”:
您只需为“admin”设置一个您想要只读的数据,就像下面的安全规则一样:
".read": "auth != null && root.child('admins/' + auth.uid).exists()"
并且您将“admin”用户的uid声明为“admins”数据库节点的子节点:
- admins
-h7yic7LeS123asdfsdgwPrfKZ2: true. //<- key = uid of a admin user
您的非管理员用户可能仍然可以看到您的网页,但他们无法获取您在此页面中为管理员显示的数据。