补全文档。

This commit is contained in:
root 2025-03-01 09:10:09 +00:00
parent d1b8bf6342
commit 9ea8771324

114
Readme.md
View File

@ -16,7 +16,7 @@
| 字段名 | 数据类型 | 约束条件 | 解释 |
| --------------- | -------- | --------------------- | ---- |
| id | INTEGER | NOT NULLPRIMARY KEY | |
| id | INTEGER | NOT NULLPRIMARY KEY | 主键 |
| url | TEXT | NOT NULL | |
| visitor_uuid | TEXT | NOT NULL | |
| last_user_agent | TEXT | NOT NULL | |
@ -30,6 +30,118 @@
5. 将 url 的 last_view_time进行排序统计出最新的 n 个记录。
6. 将所有记录的不同 visitor_uuid 相加作为网站总访客数将所有page_view_count相加作为网站总访问次数。
## 注册/登录
```json
//接口: /api/v1/user/register
//POST Body
{
"username": "string(6-20位字母数字组合)",
"password": "string(8-20位需包含大小写和数字)",
"email": "string(有效邮箱格式)"
}
// 回复
{
"code": 200,
"message": "注册成功",
"data": {
"user_id": 256
}
}
curl -X POST \
http://192.168.3.5:8081/api/v1/user/register \
-H "Content-Type: application/json" \
-d '{
"username": "amass",
"password": "123456",
"email": "12345678@qq.com"
}'
```
```json
//接口: /api/v1/user/login
// POST Body
{
"username": "string",
"password": "string",
}
curl -v -X POST \
http://192.168.3.5:8081/api/v1/user/login \
-H "Content-Type: application/json" \
-d '{
"username": "amass",
"password": "123456",
"remember_me": true
}'
{
"code": 200,
"message": "login success",
"data": {
"user_id": "U123456789"
}
}
```
```json
//接口: /api/v1/user/logout
{
"code": 200,
"message": "logout success",
}
```
```json
//接口: /api/v1/user/verify
// Cookie: auth=<jwt_token>
{
"code": 200,
"message": "会话有效",
"data": {
"user_id": "U123456789",
"session_expire": 1669987200
}
}
```
一般在Web应用前后端实现中,如何传输账号密码以及保存和后续验证?请给出经典应用方案。
用户注册的时候前端需要把账号密码发送到后端。这里的关键是传输过程的安全所以必须用HTTPS不能是明文传输。
后端收到密码后不能直接存明文得做哈希处理并且加盐。比如用bcrypt这样的算法因为它是专门为密码存储设计的速度慢可以抵御暴力破解。盐值要每个用户独立生成这样即使两个用户密码相同哈希值也不同。
然后是登录时的验证。用户输入账号密码后前端同样通过HTTPS发送到后端。后端根据用户名找到对应的用户记录取出盐值和哈希后的密码然后用相同的算法对用户输入的密码进行哈希比较两者是否一致。如果一致就生成一个会话或者Token返回给前端比如JWT。之后的前端请求可以带着这个Token后端验证Token的有效性来处理后续请求。
表名users
| 字段名 | 数据类型 | 约束条件 | 解释 |
| ------------- | -------- | ----------------------------------- | ----|
| id | INTEGER | NOT NULL,PRIMARY KEY,AUTO_INCREMENT | 主键 |
| username | TEXT | UNIQUE,NOT NULL | |
| password_hash | BLOB | NOT NULL | |
| salt | BLOB | NOT NULL | |
| created_at | INTEGER | NOT NULL | |
## Live2D 模型添加
在 XML 配置文件定义`Live2dModelsRoot` 字段,值默认为 `resources/live2d`