Control de acceso basado en usuarios
Implemente reglas para conceder o denegar el acceso de lectura y escritura según los identificadores y roles de los usuarios autenticados.
Control de acceso basado en usuarios es una lección gratuita de Firebase Auth & Realtime Database Apps en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Firebase Auth & Realtime Database Apps, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Firebase Auth & Realtime Database Apps incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
Control Access by User
Welcome to this lesson! In secure applications, it's crucial to control who can access what data. This is known as User-Based Access Control.
Firebase Realtime Database Security Rules allow you to define precise permissions based on the user who is currently logged in.
Meet the 'auth' Variable
Inside your security rules, Firebase provides a special auth variable. This variable contains information about the currently authenticated user.
auth.uid: The unique ID of the logged-in user.auth.token: An object containing custom claims and other token details (e.g., email).
If no user is logged in, auth will be null.
Authenticated Users Only
The simplest form of user-based access is to ensure only authenticated users can read or write any data.
You can achieve this by checking if the auth variable is not null.
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}Users Read Their Own Data
Often, you want users to only read data that belongs to them. Imagine a /users node where each user has a sub-node with their UID.
We can use a wildcard variable ($uid) in the path to match the current user's ID.
{
"rules": {
"users": {
"$uid": {
".read": "auth.uid == $uid"
}
}
}
}Users Write Their Own Data
Similarly, you can restrict write access so users can only modify their own data. This prevents one user from changing another's profile.
The rule is very similar to the read rule, just applied to .write.
{
"rules": {
"users": {
"$uid": {
".write": "auth.uid == $uid"
}
}
}
}Read & Write Your Own Profile
Let's combine the read and write rules. This common pattern allows users full control over their own specific data node, often used for user profiles.
Here, $userId is a placeholder for an actual user's UID.
{
"rules": {
"profiles": {
"$userId": {
".read": "auth.uid == $userId",
".write": "auth.uid == $userId"
}
}
}
}Post Ownership Example
Consider a 'posts' section where anyone can read posts, but only the creator can edit or delete their own post.
We assume each post object has an ownerId field. We use data.ownerId to refer to the existing owner ID in the database.
{
"rules": {
"posts": {
"$postId": {
".read": "true",
".write": "auth.uid == data.ownerId"
}
}
}
}Validating Data with Auth
Beyond just who can write, you can also validate what data they write. For instance, ensuring that when a user creates an item, they correctly set themselves as the owner.
The newData variable refers to the data being written.
{
"rules": {
"items": {
"$itemId": {
".write": "auth != null",
".validate": "newData.ownerId == auth.uid"
}
}
}
}Introducing User Roles
For more complex access, you can define roles like 'admin' or 'moderator'. These roles are often stored as custom claims in the user's authentication token.
You can then check for these roles in your rules using auth.token.
{
"rules": {
"adminContent": {
".read": "auth.token.isAdmin == true",
".write": "auth.token.isAdmin == true"
}
}
}Quick Check on Access
Consider the following Realtime Database Security Rules:
{
"rules": {
"messages": {
"$messageId": {
".read": "auth.uid == data.senderId",
".write": "auth.uid == data.senderId"
}
}
}
}If user "user123" is authenticated and tries to read a message where data.senderId is "user456", will they succeed?
Recap: User Access Rules
You've learned how to implement powerful user-based access control in Firebase Realtime Database Security Rules!
- The
authvariable provides current user details. - You can restrict access to authenticated users (
auth != null). - Users can be granted read/write access to their own specific data using
auth.uid == $uid. - You can validate incoming data using
newDataandauth.uid. - Roles can be used to grant access to specific user groups.
Next, explore how to validate the data itself!
Preguntas frecuentes
¿La lección «Control de acceso basado en usuarios» es gratis?
Sí — el texto completo de «Control de acceso basado en usuarios» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Firebase Auth & Realtime Database Apps, actualiza a CoddyKit PRO. El curso de Firebase Auth & Realtime Database Apps incluye 4 lecciones en total.
¿Qué aprenderé en «Control de acceso basado en usuarios»?
Implemente reglas para conceder o denegar el acceso de lectura y escritura según los identificadores y roles de los usuarios autenticados. Practicas Firebase Auth & Realtime Database Apps con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Firebase Auth & Realtime Database Apps?
No se requiere experiencia previa. Firebase Auth & Realtime Database Apps en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Control de acceso basado en usuarios»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Firebase Auth & Realtime Database Apps?
Sí. Cada lección de Firebase Auth & Realtime Database Apps incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Comprensión de la sintaxis de las reglas de seguridad
- Control de acceso basado en usuarios
- Validación de datos con reglas
- Pruebas y depuración de reglas de seguridad