users - Firebase se autentica como administrador
get users firebase (4)
¿Existe alguna manera de autenticarme con Firebase como administrador de una base de datos para acceso total de lectura / escritura (ya tiene reglas de seguridad que protegen partes de ella) o tendré que escribir una regla de seguridad que de alguna manera me permita acceder al base de datos completa, por ejemplo, proporcionando una determinada contraseña / clave.
¿Hay una manera estándar o sugerida de hacer esto?
La respuesta de Andrew solo funcionará si se está autenticando fuera del código del lado del cliente (de lo contrario, no debería usar su MY_SECRET
obviamente). Dado que muchas personas, como yo, usamos Firebase para evitar el código del servidor, aquí hay una respuesta alternativa.
En la mayoría de las aplicaciones de Firebase, probablemente tenga un objeto "Usuarios" además de su objeto simple de inicio de sesión "auth" (que solo almacena el correo electrónico y la contraseña). Puede agregar un "isAdmin" o "isModerator" (o lo que quiera) a cada $ usuario en el objeto "Usuarios".
Y entonces sus reglas se verían así (suponiendo que su auth.id coincida con su clave $ user):
{
"rules": {
"someObject": {
".write": "root.child(''Users'').child(auth.uid).child(''isAdmin'').val() == true"
}
}
}
Sí hay. Simplemente necesita autenticarse utilizando un Firebase Secret en lugar de un token de autenticación. es decir.
firebaseRef.auth(MY_SECRET);
Puede encontrar el secreto en la sección Autenticación de Forge.
Vea esto para la ''última'' documentación.
authWithCustomToken ahora es signInWithCustomToken (firebase versión 3.x)
Ejemplo de la documentación:
firebase.auth().signInWithCustomToken(token).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode === ''auth/invalid-custom-token'') {
alert(''The token you provided is not valid.'');
} else {
console.error(error);
}
});
Según la documentación , debe usar firebaseRef.authWithCustomToken
.
Ejemplo;
firebaseRef.authWithCustomToken(FIREBASE_SECRET, function(error, authData) {
if(!error) {
// You are authenticated
}
});
firebaseRef.auth
ahora está en desuso, use firebaseRef.authWithCustomToken
en firebaseRef.authWithCustomToken
lugar.