mcpField
B
betterauth-tanstack-convex

betterauth-tanstack-convex

github.com/sstobo开发24250 次安装40 周前更新
代码仓库

关于 betterauth-tanstack-convex

betterauth-tanstack-convex 是面向 Convex 与 TanStack Start 项目的 Better Auth 集成指导 skill,供开发者配置身份验证流程。内容涵盖从安装、服务端渲染认证到服务端函数鉴权的设置。

主要功能

  1. 01配置 Better Auth 与 Convex
  2. 02设置 TanStack Start 身份验证
  3. 03支持兼容 SSR 的认证流程
  4. 04添加经过认证的服务端函数
  5. 05提供文件结构与配置参考

适用场景

  1. 01为新项目设置身份验证
  2. 02排查 Better Auth 配置问题
  3. 03实现注册、登录和退出流程
  4. 04配置 SSR 认证及服务端函数

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sstobo/convex-skills --skill betterauth-tanstack-convex

安装后在 Claude Code 中输入/betterauth-tanstack-convex确认已加载。

附带文件references/setup-guide.md

详细介绍

Better Auth + Convex + TanStack Start

概述

本技能为将 Better Auth 身份验证与 Convex 后端及 TanStack Start 框架集成提供指导。它涵盖了从安装到兼容 SSR 的身份验证流程的完整设置过程。

何时使用本技能

  • 在新的 Convex + TanStack Start 项目中设置身份验证
  • 排查 Better Auth 配置问题
  • 实现注册、登录或登出流程
  • 使用 expectAuth: true 配置 SSR 身份验证
  • 添加需要身份验证的服务端函数
  • 理解身份验证提供程序层级

快速参考

所需包
npm install convex@latest @convex-dev/better-auth
npm install [email protected] --save-exact
npm install @types/node --save-dev
环境变量

Convex 部署(通过命令行):

npx convex env set BETTER_AUTH_SECRET=$(openssl rand -base64 32)
npx convex env set SITE_URL http://localhost:3000

.env.local:

CONVEX_DEPLOYMENT=dev:adjective-animal-123
VITE_CONVEX_URL=https://adjective-animal-123.convex.cloud
VITE_CONVEX_SITE_URL=https://adjective-animal-123.convex.site
VITE_SITE_URL=http://localhost:3000
文件结构
文件用途
convex/convex.config.ts注册 Better Auth 组件
convex/auth.config.ts配置身份验证提供程序
convex/auth.ts创建 Better Auth 实例 + authComponent
convex/http.ts注册身份验证 HTTP 路由
src/lib/auth-client.ts客户端身份验证工具
src/lib/auth-server.ts服务端身份验证工具
src/routes/api/auth/$.ts将身份验证请求代理到 Convex
src/routes/__root.tsx身份验证提供程序包装器 + SSR token
必要导入
// Client-side
import { authClient } from '~/lib/auth-client'

// Server-side
import { getToken, fetchAuthQuery, fetchAuthMutation } from '~/lib/auth-server'

// Backend
import { authComponent, createAuth } from './auth'
身份验证检查(后端)
const user = await authComponent.getAuthUser(ctx)
if (!user) throw new Error("Not authenticated")
使用 expectAuth 登出

使用 expectAuth: true 时,登出后重新加载页面:

await authClient.signOut({
  fetchOptions: {
    onSuccess: () => location.reload(),
  },
})

关键配置

Vite SSR Bundle

需要在 vite.config.ts 中配置,以避免模块解析问题:

ssr: {
  noExternal: ['@convex-dev/better-auth'],
}
带 expectAuth 的 ConvexQueryClient

为实现无缝 SSR 身份验证所必需:

const convexQueryClient = new ConvexQueryClient(convexUrl, {
  expectAuth: true,
})
提供程序层级

根组件必须按以下顺序包装子组件:

  1. ConvexBetterAuthProvider(最外层)
  2. QueryClientProvider
  3. 带 <Outlet /> 的 RootDocument

参考文件

在实现身份验证时加载详细的设置指南:

文件使用时机
references/setup-guide.md完整的逐步安装和配置

评论

支持 Markdown