brainax

База данных и вход в аккаунт

Урок 15 из 26 курса «Вайбкодинг: курс с нуля». Бесплатно, с анимациями и тестом.

Таблица, только умнее

База данных: упорядоченное хранилище данных приложения. Устроена как таблица в Excel. Строка: одна запись, например один пользователь. Столбец: поле, то есть одно свойство записи. На схеме столбцы id (уникальный номер строки), email и streak (сколько дней подряд). Пример на урок: ты делаешь трекер учёбы для своего класса, и у каждого одноклассника своя строка.

Почему не в браузере

ИИ часто сначала сохраняет данные в localStorage: это маленькое хранилище внутри браузера на одном устройстве. Для черновика норм. Но открыл трекер с телефона, а серии с ноутбука нет. Друг твою серию тоже не видит. Почистил браузер: всё пропало. Поэтому общие данные живут в базе, справа на схеме. Фронтенд просит, сервер проверяет и записывает.

Готовый бэкенд

Писать сервер и базу с нуля не нужно. Есть готовые бэкенды: серверная часть, которую уже собрали за тебя. Supabase: база Postgres (популярная открытая база данных), вход в аккаунт и хранилище файлов. Firebase: похожий набор от Google. Cloudflare D1: простая база для проектов на Cloudflare. У многих есть бесплатный тариф, лимиты смотри на сайте сервиса.

Вход: не изобретай свой

Auth (аутентификация): регистрация и вход, то есть способ узнать, кто перед тобой. Ловушка: попросить ИИ «сделай логин» и получить самодельную таблицу с паролями. Хранить пароли безопасно сложно, а утечка ударит по всем. Бери вход провайдера: Supabase или Firebase хранят пароли защищённо, дают вход по ссылке на почту и через Google. На схеме форма входа связана с таблицей: каждая строка принадлежит аккаунту.

RLS: каждый видит своё

Правила доступа решают, кто может читать и менять какие строки. В Supabase это RLS (Row Level Security, защита на уровне строк). Публичный ключ Supabase лежит во фронтенде, так задумано. Но без RLS любой с этим ключом скачает всю таблицу: почты всех одноклассников. С правилом «каждый видит только свои строки», как на замке схемы, чужие данные закрыты. А секретный ключ, который обходит правила, живёт только на сервере.

Проверь себя

  1. Почему данные трекера лучше хранить в базе, а не в localStorage?
    Правильный ответ: База общая для всех устройств и пользователей. localStorage живёт в одном браузере на одном устройстве. База на сервере видна с любого устройства и всем, кому разрешено.
  2. Как лучше сделать вход в аккаунт в своём приложении?
    Правильный ответ: Взять готовый вход провайдера, например Supabase. Безопасно хранить пароли сложно. Провайдеры делают это за тебя и дают вход по почте и через Google.
  3. Публичный ключ Supabase во фронтенде, а RLS выключена. Что будет?
    Правильный ответ: Любой сможет скачать всю таблицу. Публичный ключ виден всем, это нормально. Защищают данные правила RLS. Без них таблица открыта любому.

← Домен и DNS API: подключаем чужие сервисы →