v0.11.1: 权限体系重构 + AI管线优化 + 内容整理

This commit is contained in:
sgp
2026-05-22 18:36:41 +08:00
parent 7955d11c52
commit b33fe1e8e1
397 changed files with 30940 additions and 161 deletions
+58
View File
@@ -0,0 +1,58 @@
# 认证模块
## 技术栈
- NextAuth.js v4
- Credentials Provider(用户名密码 + 用户邮箱密码)
- JWT Session策略
## 配置 (`src/lib/auth.ts`)
### 管理员认证
- 唯一凭证: `admin@zhuiguang.ai` / `admin123`
- 硬编码在auth.ts中,非数据库查询
### 用户认证
- 邮箱+密码注册/登录
- 用户数据存储在User表
- 密码bcrypt加密
### Session策略
- 使用JWT,不使用数据库session
- JWT密钥: `NEXTAUTH_SECRET` 环境变量
### 回调函数
- `jwt`: 登录时将用户信息加入token
- `session`: 将token中的用户信息传递给session
## 路由保护 (`src/middleware.ts`)
### 保护规则
- 保护 `/admin` 下所有路由
- 跳过 `/admin/login`
- 使用NextAuth middleware进行认证检查
### 登录流程
1. 访问 `/admin/*` → middleware检查session
2. 未登录 → 重定向到 `/admin/login`
3. 登录页提交表单 → Server Action验证凭证
4. 验证成功 → 重定向到 `/admin`
## 管理员API认证 (`src/lib/admin-auth.ts`)
### requireAdmin中间件
- 所有 `/api/admin/` 路由必须使用requireAdmin中间件
- 验证流程: 检查session → 验证邮箱是否为admin@zhuiguang.ai
- 已覆盖28个后台API端点
## 登录页
- 管理员登录: `src/app/(admin)/admin/login/page.tsx` (原生HTML表单 + CSRF Token)
- 用户登录: `src/app/login/page.tsx` (NextAuth Credentials + GitHub OAuth)
- 用户登录弹窗: `src/components/common/LoginModal.tsx`
## 环境变量
```
NEXTAUTH_URL=http://localhost:3100
NEXTAUTH_SECRET=<secret>
GITHUB_ID=<github-oauth-id>
GITHUB_SECRET=<github-oauth-secret>
```