Skip to content

Commit 6b79177

Browse files
github-actions[bot]LY-Xiang
authored andcommitted
lint:refs/heads/main
1 parent 703e126 commit 6b79177

File tree

1 file changed

+71
-63
lines changed

1 file changed

+71
-63
lines changed

docs/杂项/网站/后端.md

Lines changed: 71 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,73 @@
11
# 后端
22

3-
**前端:**
4-
5-
* **主页检测登录状态:**
6-
* 每次访问主页都进行检测
7-
* 请求后端验证 cookie/token。
8-
* 优化:`localStorage`/`sessionStorage` 缓存状态 (仅辅助,关键操作仍需后端验证)。
9-
* 显示用户信息及注销选项。
10-
11-
* **登录页:**
12-
* 用户名/邮箱、密码、Remember Me (单选)。
13-
* 明确错误提示 (如:用户名/密码格式错误)。
14-
* 密码强度指示。
15-
* “忘记密码” 链接。
16-
* 输入用户名/邮箱的时候, 后端检测是否存在.
17-
* 重定向到主页
18-
19-
* **注册页:**
20-
* 用户名、邮箱、密码、重复密码。
21-
* 实时用户名/邮箱唯一性验证。
22-
* 明确密码复杂度要求。
23-
* 服务条款/隐私政策链接,并要求同意。
24-
* 人机验证 (提交表单前)。
25-
* 重定向到登录页
26-
27-
* **log out:**
28-
* 清除前端登录状态缓存。
29-
* 重定向到主页。
30-
31-
* **个人信息页:**
32-
* 展示邮箱验证状态,未验证时显示按钮。
33-
* log out 按钮
34-
35-
**后端:**
36-
37-
* **登录 (POST /api/auth/login):**
38-
* 验证用户名/邮箱 & 密码 (bcrypt/scrypt/Argon2 + salt)。
39-
* 错误:401 Unauthorized (区分用户不存在/密码错误, 但不直接暴露用户是否存在)。
40-
* 成功:200 OK, 返回用户信息(用户ID,用户名,邮箱),设置 Cookie:
41-
* `HttpOnly: true`
42-
* `Secure: true` (HTTPS 必须)
43-
* `SameSite: Strict/Lax`
44-
* 过期:Remember Me ? 1 个月 : 6 小时
45-
* 速率限制 (防暴力破解)。
46-
* 如果用户的邮箱未验证,提醒用户验证
47-
48-
* **注册 (POST /api/auth/register):**
49-
* 生成唯一 ID (UUID/雪花算法)。
50-
* 检查用户名和邮箱是否已经被注册.
51-
* 密码哈希 (同登录)。
52-
* 数据库事务 (创建用户 & 发送邮件)。
53-
* 生成验证链接,存入数据库/Redis (过期时间 10 分钟)。
54-
* 发送验证邮件
55-
56-
* **邮箱验证 (GET/POST /api/auth/verify-email):**
57-
* 参数:链接。
58-
* 查询数据库/Redis,链接匹配 & 未过期。
59-
* 成功:更新用户状态为“已验证”,链接失效。
60-
* 失败:返回错误信息。
61-
62-
* **注销 (DELETE /api/auth/logout):**
63-
* 清除 Cookie。
64-
65-
* 采用 PostgreSQL 数据库。
3+
**前端:**
4+
5+
- **主页检测登录状态:**
6+
7+
- 每次访问主页都进行检测
8+
- 请求后端验证 cookie/token。
9+
- 优化:`localStorage`/`sessionStorage` 缓存状态 (仅辅助,关键操作仍需后端验证)。
10+
- 显示用户信息及注销选项。
11+
12+
- **登录页:**
13+
14+
- 用户名/邮箱、密码、Remember Me (单选)。
15+
- 明确错误提示 (如:用户名/密码格式错误)。
16+
- 密码强度指示。
17+
- “忘记密码”链接。
18+
- 输入用户名/邮箱的时候,后端检测是否存在。
19+
- 重定向到主页
20+
21+
- **注册页:**
22+
23+
- 用户名、邮箱、密码、重复密码。
24+
- 实时用户名/邮箱唯一性验证。
25+
- 明确密码复杂度要求。
26+
- 服务条款/隐私政策链接,并要求同意。
27+
- 人机验证 (提交表单前)。
28+
- 重定向到登录页
29+
30+
- **log out:**
31+
32+
- 清除前端登录状态缓存。
33+
- 重定向到主页。
34+
35+
- **个人信息页:**
36+
- 展示邮箱验证状态,未验证时显示按钮。
37+
- log out 按钮
38+
39+
**后端:**
40+
41+
- **登录 (POST /api/auth/login):**
42+
43+
- 验证用户名/邮箱 & 密码 (bcrypt/scrypt/Argon2 + salt)。
44+
- 错误:401 Unauthorized (区分用户不存在/密码错误,但不直接暴露用户是否存在)。
45+
- 成功:200 OK, 返回用户信息 (用户 ID,用户名,邮箱),设置 Cookie:
46+
- `HttpOnly: true`
47+
- `Secure: true` (HTTPS 必须)
48+
- `SameSite: Strict/Lax`
49+
- 过期:Remember Me ? 1 个月 : 6 小时
50+
- 速率限制 (防暴力破解)。
51+
- 如果用户的邮箱未验证,提醒用户验证
52+
53+
- **注册 (POST /api/auth/register):**
54+
55+
- 生成唯一 ID (UUID/雪花算法)。
56+
- 检查用户名和邮箱是否已经被注册。
57+
- 密码哈希 (同登录)。
58+
- 数据库事务 (创建用户 & 发送邮件)。
59+
- 生成验证链接,存入数据库/Redis (过期时间 10 分钟)。
60+
- 发送验证邮件
61+
62+
- **邮箱验证 (GET/POST /api/auth/verify-email):**
63+
64+
- 参数:链接。
65+
- 查询数据库/Redis,链接匹配 & 未过期。
66+
- 成功:更新用户状态为“已验证”,链接失效。
67+
- 失败:返回错误信息。
68+
69+
- **注销 (DELETE /api/auth/logout):**
70+
71+
- 清除 Cookie。
72+
73+
- 采用 PostgreSQL 数据库。

0 commit comments

Comments
 (0)