Главная · Скиллы · convex-setup-auth

convex-setup-authаутентификация в Convex приложениях

get-convex/agent-skills

Безопасная аутентификация в Convex: Convex Auth, Clerk, WorkOS AuthKit, Auth0 и другие провайдеры. Настройка, токены и защита функций.

Установка

npx -y skills add get-convex/agent-skills --skill convex-setup-auth --agent claude-code

Настройка аутентификации Convex

Реализация безопасной аутентификации в Convex с управлением пользователями и контролем доступа.

Когда использовать

  • Первоначальная настройка аутентификации.
  • Реализация управления пользователями (таблица users, маппинг идентификаторов).
  • Создание вспомогательных функций аутентификации.
  • Настройка провайдеров (Convex Auth, Clerk, WorkOS AuthKit, Auth0, кастомный JWT).

Когда НЕ использовать

  • Аутентификация для не-Convex бэкенда.
  • Чистая документация OAuth/OIDC без имплементации Convex.
  • Провайдер уже настроен, нужен только однострочный фикс.

Первый шаг: выбор провайдера

Convex поддерживает несколько подходов к аутентификации. Не предполагайте провайдер без проверки.

Перед написанием кода: спросите пользователя, какое решение он хочет — если это не очевидно из репозитория. Проверьте сигналы в репозитории:

  • Зависимости: @clerk/*, @workos-inc/*, @auth0/* или пакеты Convex Auth.
  • Существующие файлы: convex/auth.config.ts, middleware аутентификации, обёртки провайдеров.
  • Переменные окружения, явно указывающие на провайдера.

Варианты провайдеров

  • Convex Auth — хороший вариант по умолчанию, когда аутентификация обрабатывается прямо в Convex.
  • Clerk — когда приложение уже использует Clerk или нужны его hosted auth функции.
  • WorkOS AuthKit — когда приложение уже использует WorkOS.
  • Auth0 — когда приложение уже использует Auth0.
  • Кастомный JWT — при интеграции существующей системы аутентификации.

После выбора провайдера

Прочитайте официальную документацию провайдера и соответствующий локальный справочный файл:

Используйте эти источники для: установки пакетов, подключения клиентского провайдера, переменных окружения, настройки convex/auth.config.ts, паттернов UI входа и выхода.

Базовый паттерн: защита бэкенд-функций

Самая распространённая задача аутентификации — проверка идентификатора в функциях Convex.

// Плохо: доверие userId, предоставленному клиентом
export const getMyProfile = query({
  args: { userId: v.id("users") },
  handler: async (ctx, args) => {
    return await ctx.db.get(args.userId);
  },
});
// Хорошо: серверная проверка идентификатора
export const getMyProfile = query({
  args: {},
  handler: async (ctx) => {
    const identity = await ctx.auth.getUserIdentity();
    if (!identity) throw new Error("Not authenticated");

    return await ctx.db
      .query("users")
      .withIndex("by_tokenIdentifier", (q) =>
        q.eq("tokenIdentifier", identity.tokenIdentifier),
      )
      .unique();
  },
});

Рабочий процесс

  1. Определить провайдера — спросить пользователя или вывести из репозитория.
  2. Спросить, нужна ли только локальная настройка или сразу production-ready.
  3. Прочитать соответствующий справочный файл провайдера.
  4. Следовать официальной документации провайдера для текущих деталей настройки.
  5. Следовать официальной документации Convex для общего поведения аутентификации бэкенда.
  6. Добавить хранение пользователей на уровне приложения только если это нужно документации и требованиям приложения.
  7. Добавить проверки авторизации для владения, ролей или доступа команды только там, где это нужно приложению.

Чек-лист

  • Провайдер выбран до написания кода.
  • Прочитан соответствующий справочный файл провайдера.
  • Используется официальная документация для специфичного подключения провайдера.
  • Не изобретена кросс-провайдерная таблица users или флоу storeUser для Convex Auth.
  • Добавлены проверки аутентификации в защищённых бэкенд-функциях.
  • Чёткие сообщения об ошибках («Not authenticated», «Unauthorized»).

Из того же репозитория

convex-quickstartбыстрый старт с Convex
get-convex/agent-skills
От нуля до рабочего Convex backend за минуты: npm create convex с шаблонами React+Vite+shadcn или Next.js. Настройка переменных окружения и первый деплой.
3159.2k установок
convex-performance-auditаудит производительности Convex
get-convex/agent-skills
Диагностика и устранение проблем производительности Convex: hot-path reads, write contention, оптимизация subscriptions. Конкретные метрики и исправления.
3158.8k установок
convex-migration-helperмиграции схем Convex
get-convex/agent-skills
Миграции схем Convex без поломки продакшена: смена типов полей, добавление обязательных полей, реструктуризация таблиц. Безопасные поэтапные изменения.
3158.5k установок
convex-create-componentкомпоненты Convex с изоляцией
get-convex/agent-skills
Создаёт Convex компоненты с изолированными таблицами и чистыми границами между приложением и переиспользуемой логикой. Правильная структура компонентов.
3158.5k установок
convexConvex бэкенд real-time база данных
get-convex/agent-skills
Convex: бэкенд с real-time базой данных.
3135.1k установок
convex-helpers-guideруководство помощников Convex
get-convex/agent-skills
Руководство по помощникам Convex.
31572 установок