Estoy tratando de construir un sitio básico de redes sociales con fotos de perfil que cualquier usuario pueda leer, pero cada usuario puede editar solo su propia foto. Lo escribí después de revisar la documentación aquí https://firebase.google.com/docs/storage/security/rules-conditions
y cuando uso el simulador en la configuración de almacenamiento con un usuario autenticado de prueba, obtengo un éxito
Aquí hay una foto de la lectura de prueba exitosa : https://i.stack.imgur.com/ZCF5L.png
Pero también intenté ejecutar esto en mi aplicación implementada y cada solicitud, sin importar si se lee o escribe, si está autenticada o no, mi solicitud sigue siendo rechazada.
solicitud de almacenamiento fallida de la aplicación implementada
Estas son mis reglas de seguridad:
service cloud.firestore { match /b/{bucket}/o { match /internal/profilePhoto/{imageId} { allow read: if request.auth != null; allow write: if request.auth.uid == imageId; } } }y aquí está mi código con la dirección que estoy solicitando
async function upload(file, currentUser, setLoading) { const fileRef = ref(storage, 'internal/profilePhoto/'+currentUser.uid); setLoading(true); console.log(currentUser.uid) const snapshot = await uploadBytes(fileRef, file); const photoURL = await getDownloadURL(fileRef); updateProfile(currentUser, {photoURL}); setLoading(false); alert("Uploaded file!"); }Cualquier orientación sería muy apreciada.
Me lo imaginé. Abrí otra aplicación con la configuración de almacenamiento de prueba predeterminada y mi código me permitió cargarlo en esa base de datos. Regresé a mi configuración de seguridad de ALMACENAMIENTO DE FIREBASE y noté que la primera línea decía
service cloud.fireststore {Ese fue mi problema. Accidentalmente copié una configuración de regla para Cloud Firestore que dejó mi base de datos de almacenamiento sin ninguna regla de seguridad que asumo hizo que el acceso predeterminado no fuera posible. Si desea establecer una configuración de regla para el almacenamiento de Firebase, esa regla debe ser
service firebase.storage {Espero que esto le ahorre al menos a una persona algunas horas de golpes en la cabeza.
La configuración de regla completa que estoy usando para la prueba es
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**}{ allow read, write: if true; } } }