Безопасная аутентификация в Convex: Convex Auth, Clerk, WorkOS AuthKit, Auth0 и другие провайдеры. Настройка, токены и защита функций.
npx -y skills add get-convex/agent-skills --skill convex-setup-auth --agent claude-codeРеализация безопасной аутентификации в Convex с управлением пользователями и контролем доступа.
Convex поддерживает несколько подходов к аутентификации. Не предполагайте провайдер без проверки.
Перед написанием кода: спросите пользователя, какое решение он хочет — если это не очевидно из репозитория. Проверьте сигналы в репозитории:
@clerk/*, @workos-inc/*, @auth0/* или пакеты Convex Auth.convex/auth.config.ts, middleware аутентификации, обёртки провайдеров.Прочитайте официальную документацию провайдера и соответствующий локальный справочный файл:
references/convex-auth.mdreferences/clerk.mdreferences/workos-authkit.mdreferences/auth0.mdИспользуйте эти источники для: установки пакетов, подключения клиентского провайдера, переменных окружения, настройки 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();
},
});
users или флоу storeUser для Convex Auth.