这些是我的 firebase 实时数据库规则;
{
/* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
"rules": {
"users": {
"$uid": {
".read": "auth.id === $uid",
".write": "auth.id === $uid"
}
}
}
}
现在;我希望当用户登录时,他应该能够访问他的用户数据。
但是目前我收到访问被拒绝的响应,表明客户端没有访问所需数据所需的权限,但他已成功登录。
帮助我了解如何让用户在登录时读取其用户数据;
以下是我的尝试;
//my web app's Firebase configuration
var firebaseConfig = {
// my configurations
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
// Initialize variables
const auth = firebase.auth()
const database = firebase.database()
// Set up our login function
function login () {
// Get all our input fields
email = document.getElementById('email').value
password = document.getElementById('password').value
// Validate input fields
if (validate_email(email) == false || validate_password(password) == false) {
alert('Email or Password is Outta Line!!')
return
// Don't continue running the code
}
var database_ref = database.ref()
auth.signInWithEmailAndPassword(email, password)
.then(function() {
// Declare user variable
var user = auth.currentUser
// Create User data
var user_data = {
last_login : Date.now()
}
// Push to Firebase Database
database_ref.child('users/' + user.uid).update(user_data)
const usersRef = database.ref('users');
const userRef = usersRef.child(user.uid);
// Add this user to Firebase Database
//var database_ref = database.ref()
userRef.once('value')
.then(snapshot => {
const userData = snapshot.val();
alert(userData); // Access the retrieved user data
})
.catch(error => {
alert(error);
});
// DOne
alert('User Logged In!! && verified ' + user.emailVerified + " usernameIs "+ JSON.stringify(user.uid))
})
.catch(function(error) {
// Firebase will use this to alert of its errors
var error_code = error.code
var error_message = error.message
alert(error_message)
})
}
我通过更新实时数据库规则解决了该问题,如下所示;
{
"rules": {
"users": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
}
}
}
}