Доступ к данным пользователей на основе ролей
Объединяйте роли Firebase Auth с правилами Realtime Database, чтобы предоставлять администраторам, участникам и гостям разные уровни доступа к общим и личным данным.
«Доступ к данным пользователей на основе ролей» — бесплатный урок Firebase Auth & Realtime Database Apps на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Firebase Auth & Realtime Database Apps, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Firebase Auth & Realtime Database Apps содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Beyond Owner-Only Access
So far each user reads and writes their own data. Real apps need roles: an admin who moderates content, members who collaborate, and guests with read-only access.
Role-based access control (RBAC) layers permissions on top of authentication.
Where Roles Live
You can store a user's role in two places:
- A
rolesnode in the database, read inside rules - A custom claim on the auth token (set server-side)
Custom claims are faster to check; database roles are easier to change at runtime.
Roles in the Database
A simple model maps each uid to a role string. This data itself must be locked down so users cannot promote themselves.
{
"roles": {
"uid_alice": "admin",
"uid_bob": "member"
}
}Checking a Database Role in Rules
Rules can read other parts of the database with root. Here only admins may write to a shared config node.
{
"rules": {
"config": {
".write": "root.child('roles').child(auth.uid).val() === 'admin'"
}
}
}Custom Claims for Roles
With the Admin SDK you can attach a role to the token itself. This is checked without an extra database read.
await admin.auth().setCustomUserClaims(uid, { role: 'admin' });Checking Claims in Rules
Custom claims appear under auth.token. The rule becomes simpler and avoids a root lookup.
{
"rules": {
"config": {
".write": "auth.token.role === 'admin'"
}
}
}Reading the Claim Client-Side
The client can read its own claims to adjust the UI, for example showing an admin panel only to admins.
import { getAuth, getIdTokenResult } from 'firebase/auth';
const res = await getIdTokenResult(getAuth().currentUser);
if (res.claims.role === 'admin') showAdminPanel();Tiered Read Access
Different roles can have different read scopes. Members read shared docs; guests read only public ones.
{
"rules": {
"shared": {
".read": "auth.token.role === 'member' || auth.token.role === 'admin'"
}
}
}Protecting the Role Data Itself
Critically, users must not be able to edit their own role. Make the roles node writable only by admins (or only server-side), or self-escalation defeats the whole system.
{
"rules": {
"roles": {
".write": "auth.token.role === 'admin'"
}
}
}Claim Propagation Delay
After you change a custom claim, the user's existing token still has the old value until it refreshes (about an hour, or on forced refresh). Call getIdToken(true) client-side to pick up new roles immediately.
await getAuth().currentUser.getIdToken(true);Choosing an Approach
Use custom claims for stable, security-critical roles, and database roles when permissions change often or need to be queried. Many apps combine both.
Quick Check
Test your understanding of role-based access.
Recap
You can now grant tiered access by role.
- Store roles in the database or as custom claims
- Check database roles via
root, claims viaauth.token - Give roles different read/write scopes
- Lock down the role data so users cannot self-promote
- Refresh tokens to pick up new claims promptly
Часто задаваемые вопросы
Урок «Доступ к данным пользователей на основе ролей» бесплатный?
Да — полный текст урока «Доступ к данным пользователей на основе ролей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Firebase Auth & Realtime Database Apps, подпишись на CoddyKit PRO. Курс Firebase Auth & Realtime Database Apps содержит 4 уроков всего.
Чему я научусь в уроке «Доступ к данным пользователей на основе ролей»?
Объединяйте роли Firebase Auth с правилами Realtime Database, чтобы предоставлять администраторам, участникам и гостям разные уровни доступа к общим и личным данным. Ты практикуешь Firebase Auth & Realtime Database Apps с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Firebase Auth & Realtime Database Apps?
Предыдущий опыт не требуется. Firebase Auth & Realtime Database Apps на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Доступ к данным пользователей на основе ролей»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Firebase Auth & Realtime Database Apps?
Да. Каждый урок Firebase Auth & Realtime Database Apps включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Связывание данных пользователей с аутентификацией
- Профили пользователей в реальном времени
- Совместное редактирование данных
- Доступ к данным пользователей на основе ролей