name: authentication-logic description: 使用 Better Auth 进行客户端和服务器端身份验证的指南。
身份验证逻辑
概述
我们使用 Better Auth (better-auth) 来识别用户。
配置
- 客户端:
lib/auth-client.ts导出authClient。 - 服务器端:
lib/auth.ts导出auth。
客户端使用
在客户端组件中使用 authClient 进行登录、登出和检查会话状态。
import { authClient } from "@/lib/auth-client";
// 登录
await authClient.signIn.email({
email,
password,
});
// 社交登录
await authClient.signIn.social({
provider: "google",
callbackURL: "/onboarding",
});
// 登出
await authClient.signOut();
服务器端使用
使用 auth.api.getSession 来保护 API 路由或服务器操作。
import { auth } from "@/lib/auth";
import { headers } from "next/headers";
const session = await auth.api.getSession({
headers: await headers()
});
if (!session) {
return new Response("Unauthorized", { status: 401 });
}
AuthBar 组件
- 位于
textbook/src/components/AuthBar/index.tsx。 - 显示用户头像或登录按钮。
- 从
/api/auth/session(代理 Better Auth 的 Next.js API 路由)获取会话。