认证服务
配置 Better Auth、GitHub OAuth 和 Google OAuth
认证服务
EasyStarter 使用 Better Auth 作为认证方案,当前已经内置:
- 邮箱 + 密码登录
- GitHub OAuth 登录
- Google OAuth 登录
服务端配置位于 apps/server/src/lib/auth.ts。其中:
- GitHub 回调地址:
{SERVER_URL}/api/auth/callback/github - Google 回调地址:
{SERVER_URL}/api/auth/callback/google
如果你启用了邮箱注册验证或忘记密码,还需要先完成 邮件服务 配置。
所需环境变量
BETTER_AUTH_SECRET=
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=获取 BETTER_AUTH_SECRET
BETTER_AUTH_SECRET 用于 Better Auth 签名和加密会话数据,必须是一个足够长的随机字符串。
你可以直接自己生成一个,例如:
openssl rand -base64 32复制生成结果,填到:
BETTER_AUTH_SECRET=your-long-random-secretBETTER_AUTH_SECRET=your-long-random-secret创建 GitHub OAuth App
GitHub OAuth 用于网页端和原生端的 GitHub 登录。
GitHub 开发者后台: GitHub Developer Settings
- 登录 GitHub,进入
Settings - 打开
Developer settings - 进入
OAuth Apps - 点击
New OAuth App - 填写应用信息
关键字段建议这样填:
Application name:你的产品名Homepage URL:你的前端地址,例如https://yourdomain.comAuthorization callback URL:{SERVER_URL}/api/auth/callback/github
例如你的服务端地址是:
SERVER_URL=https://server.yourdomain.com那么这里就应该填写:
https://server.yourdomain.com/api/auth/callback/github开发环境下,easystarter 默认服务端地址是 http://localhost:3001,所以这里通常填写:
http://localhost:3001/api/auth/callback/github创建完成后你会拿到:
Client ID-> 对应GITHUB_CLIENT_IDClient Secret-> 对应GITHUB_CLIENT_SECRET
创建 Google OAuth Client
Google OAuth 用于网页端和原生端的 Google 登录。
Google Cloud 控制台: Google Cloud Console
- 登录 Google Cloud Console
- 选择或新建一个项目
- 进入
APIs & Services > Credentials - 点击
Create Credentials - 选择
OAuth client ID - 如果系统要求,先完成
OAuth consent screen - 应用类型选择
Web application - 配置允许的来源和回调地址
关键字段建议这样填:
Authorized JavaScript origins:你的前端地址,例如https://yourdomain.comAuthorized redirect URIs:{SERVER_URL}/api/auth/callback/google
例如你的服务端地址是:
SERVER_URL=https://server.yourdomain.com那么这里就应该填写:
https://server.yourdomain.com/api/auth/callback/google开发环境下,easystarter 默认服务端地址是 http://localhost:3001,所以这里通常填写:
http://localhost:3001/api/auth/callback/google创建完成后你会拿到:
Client ID-> 对应GOOGLE_CLIENT_IDClient Secret-> 对应GOOGLE_CLIENT_SECRET
填入环境变量
本地开发建议统一放到 apps/server/.dev.vars:
BETTER_AUTH_SECRET=your-long-random-secret
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret生产部署时,敏感值放到 apps/server/.env.production:
BETTER_AUTH_SECRET=your-long-random-secret
GITHUB_CLIENT_SECRET=your-github-client-secret
GOOGLE_CLIENT_SECRET=your-google-client-secret然后在 apps/server/wrangler.jsonc 的 vars 中,把非敏感的 GITHUB_CLIENT_ID 和 GOOGLE_CLIENT_ID 填进去:
"vars": {
"GITHUB_CLIENT_ID": "your-github-client-id",
"GOOGLE_CLIENT_ID": "your-google-client-id"
}Better Auth 在项目中的作用
EasyStarter 当前的 Better Auth 配置同时负责:
- 邮箱密码注册和登录
- 邮箱验证
- 忘记密码
- GitHub 登录
- Google 登录
- 基于 Cookie 的会话管理
核心配置文件:
apps/server/src/lib/auth.ts如果后续你要扩展更多登录方式,例如 Apple、Discord、GitLab,通常也是继续在这里追加 socialProviders 配置。