Documentation

身份认证

基于 better-auth 的内置认证系统,支持邮箱密码登录、OAuth 社交登录、邮箱验证和验证码保护

VibeAny 使用 better-auth 作为认证框架,会话数据存储在 PostgreSQL 中。认证是可选的——如果未配置 DATABASE_URLBETTER_AUTH_SECRET,应用将以静态模式运行,不包含用户登录功能。

前置条件

在配置认证之前,请确保已完成:

  1. PostgreSQL 数据库 — 参考数据库配置
  2. 邮件服务 — 用于邮箱验证(推荐使用 Resend,参考环境变量

快速开始

设置认证密钥

.env 中添加:

BETTER_AUTH_SECRET=your-secret-key

可以在 better-auth 官网生成,或使用下方按钮:

配置数据库

确保 .env 中已设置 DATABASE_URL

DATABASE_URL="postgresql://user:password@host:port/database"

配置邮件服务

邮箱验证默认关闭,需要配置邮件服务以便用户完成账号验证:

EMAIL_VERIFICATION_ENABLED=false
EMAIL_PROVIDER=resend
EMAIL_FROM="YourApp <[email protected]>"
RESEND_API_KEY=re_xxx

或配置自定义 SMTP 服务器:

EMAIL_PROVIDER=custom
EMAIL_FROM="YourApp <[email protected]>"
EMAIL_HOST=smtp.example.com
EMAIL_ADDRESS=[email protected]
EMAIL_USER=your-username
EMAIL_PASSWORD=your-password

运行数据库迁移

生成并应用数据库表结构:

pnpm db:generate
pnpm db:migrate

验证

启动开发服务器,访问登录页面,应该能看到邮箱密码注册表单。

邮箱密码认证

邮箱密码登录默认开启,流程如下:

  1. 用户使用邮箱和密码注册
  2. 系统自动发送验证邮件
  3. 用户点击验证链接
  4. 账号验证完成,自动登录

提示

邮箱验证是必需的——用户在完成邮箱验证之前无法登录。

OAuth 社交登录

VibeAny 支持 GitHub 和 Google 作为 OAuth 登录方式。配置对应的环境变量后会自动启用。

GitHub

创建 OAuth 应用

前往 GitHub Developer SettingsOAuth AppsNew OAuth App

回调 URL 填写:

https://your-domain.com/api/auth/callback/github

本地开发环境:

http://localhost:3377/api/auth/callback/github

配置环境变量

将 Client ID 和 Client Secret 复制到 .env

GITHUB_CLIENT_ID=your-client-id
GITHUB_CLIENT_SECRET=your-client-secret

Google

创建 OAuth 凭据

前往 Google Cloud Console创建凭据OAuth 客户端 ID

应用类型选择 Web 应用,添加已授权的重定向 URI:

https://your-domain.com/api/auth/callback/google

本地开发环境:

http://localhost:3377/api/auth/callback/google

配置环境变量

将 Client ID 和 Client Secret 复制到 .env

GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret

提示

OAuth 登录是可选的。登录页面会根据环境变量是否配置,自动显示或隐藏对应的社交登录按钮。

验证码保护

VibeAny 支持 Cloudflare Turnstile 来保护登录、注册和 OAuth 流程,防止机器人攻击。

创建 Turnstile 小组件

前往 Cloudflare DashboardTurnstile添加小组件。添加你的域名,获取 Site Key 和 Secret Key。

配置环境变量

VITE_TURNSTILE_CAPTCHA_ENABLED=true
VITE_TURNSTILE_SITE_KEY=0x4xxx
TURNSTILE_SECRET_KEY=0x4xxx

管理员访问

管理员用户可以访问后台管理面板,管理用户、支付、积分和配置。

将用户的邮箱添加到 ADMIN_EMAILS 环境变量即可授予管理员权限:

多个邮箱用英文逗号分隔。

配置参考

环境变量必填说明
BETTER_AUTH_SECRET认证加密密钥
DATABASE_URLPostgreSQL 连接地址
ADMIN_EMAILS管理员邮箱,多个用逗号分隔
GITHUB_CLIENT_IDGitHub OAuth Client ID
GITHUB_CLIENT_SECRETGitHub OAuth Client Secret
GOOGLE_CLIENT_IDGoogle OAuth Client ID
GOOGLE_CLIENT_SECRETGoogle OAuth Client Secret
VITE_TURNSTILE_CAPTCHA_ENABLED启用 Turnstile 验证码(true/false
VITE_TURNSTILE_SITE_KEYTurnstile Site Key
TURNSTILE_SECRET_KEYTurnstile Secret Key

数据库表

认证系统会自动创建以下数据库表:

表名说明
user用户信息(名称、邮箱、头像等)
session活跃会话,包含令牌和过期时间
account关联的认证方式(邮箱密码、GitHub、Google)
verification邮箱验证令牌

目录