feat(admin): 添加管理员评论密钥功能和安全设置
- 在管理后台添加管理员评论密钥设置,前台管理员评论需验证 - 新增安全设置区块,包含允许调用域名和管理员密钥配置 - 更新相关API文档和前端配置说明 - 调整评论配置接口返回字段,增加密钥相关字段
This commit is contained in:
@@ -4,6 +4,7 @@ export default defineConfig({
|
||||
title: 'CWD 评论系统文档',
|
||||
description: '基于 Cloudflare Workers 的轻量级评论系统',
|
||||
lang: 'zh-CN',
|
||||
outline: [2, 3],
|
||||
head: [
|
||||
[
|
||||
'link',
|
||||
|
||||
@@ -432,7 +432,7 @@ Token 通过登录接口获取,有效期为 24 小时。
|
||||
|
||||
## GET /admin/settings/comments
|
||||
|
||||
获取评论配置,例如博主邮箱、徽标和头像前缀等。
|
||||
获取评论配置,例如博主邮箱、徽标、头像前缀、管理员密钥等。
|
||||
|
||||
- 方法:`GET`
|
||||
- 路径:`/admin/settings/comments`
|
||||
@@ -448,11 +448,23 @@ Token 通过登录接口获取,有效期为 24 小时。
|
||||
"adminBadge": "博主",
|
||||
"avatarPrefix": "https://gravatar.com/avatar",
|
||||
"adminEnabled": true,
|
||||
"allowedDomains": []
|
||||
"allowedDomains": [],
|
||||
"adminKey": "your-admin-key",
|
||||
"adminKeySet": true
|
||||
}
|
||||
```
|
||||
|
||||
字段说明与公开接口 `/api/config/comments` 一致。
|
||||
字段说明(相比公开接口 `/api/config/comments` 增加了管理员密钥相关字段):
|
||||
|
||||
| 字段名 | 类型 | 说明 |
|
||||
| -------------- | ------- | -------------------------------------------------------- |
|
||||
| `adminEmail` | string | 博主邮箱地址,用于显示“博主”标识以及管理员身份验证 |
|
||||
| `adminBadge` | string | 博主标识文字,例如 `"博主"` |
|
||||
| `avatarPrefix` | string | 头像地址前缀,如 Gravatar 或 Cravatar 镜像地址 |
|
||||
| `adminEnabled` | boolean | 是否启用博主标识相关展示 |
|
||||
| `allowedDomains` | Array\<string\> | 允许调用组件的域名列表,留空则不限制 |
|
||||
| `adminKey` | string\|null | 管理员评论密钥(明文),仅通过管理后台接口返回 |
|
||||
| `adminKeySet` | boolean | 是否已经设置过管理员评论密钥 |
|
||||
|
||||
### 错误响应
|
||||
|
||||
@@ -486,19 +498,21 @@ Token 通过登录接口获取,有效期为 24 小时。
|
||||
"adminBadge": "站长",
|
||||
"avatarPrefix": "https://cravatar.cn/avatar",
|
||||
"adminEnabled": true,
|
||||
"allowedDomains": []
|
||||
"allowedDomains": [],
|
||||
"adminKey": "your-admin-key"
|
||||
}
|
||||
```
|
||||
|
||||
字段说明:
|
||||
|
||||
| 字段名 | 类型 | 必填 | 说明 |
|
||||
| ---------------- | ------- | ---- | ---------------------------------------------- |
|
||||
| `adminEmail` | string | 否 | 博主邮箱地址,需为合法邮箱 |
|
||||
| `adminBadge` | string | 否 | 博主标识文字,例如 `"博主"` |
|
||||
| `avatarPrefix` | string | 否 | 头像地址前缀,如 Gravatar 或 Cravatar 镜像地址 |
|
||||
| `adminEnabled` | boolean | 否 | 是否启用博主标识相关功能 |
|
||||
| `allowedDomains` | Array | 否 | 是否允许前端调用的域名 |
|
||||
| 字段名 | 类型 | 必填 | 说明 |
|
||||
| ---------------- | ------- | ---- | -------------------------------------------------------------------- |
|
||||
| `adminEmail` | string | 否 | 博主邮箱地址,需为合法邮箱 |
|
||||
| `adminBadge` | string | 否 | 博主标识文字,例如 `"博主"` |
|
||||
| `avatarPrefix` | string | 否 | 头像地址前缀,如 Gravatar 或 Cravatar 镜像地址 |
|
||||
| `adminEnabled` | boolean | 否 | 是否启用博主标识相关展示 |
|
||||
| `allowedDomains` | Array | 否 | 允许前端调用组件的域名列表 |
|
||||
| `adminKey` | string | 否 | 管理员评论密钥,留空则表示清除密钥;设置后前台管理员评论需输入密钥 |
|
||||
|
||||
### 成功响应
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
"post_slug": "https://example.com/blog/hello-world",
|
||||
"post_title": "博客标题,可选",
|
||||
"post_url": "https://example.com/blog/hello-world",
|
||||
"author": "张三",
|
||||
"name": "张三",
|
||||
"email": "zhangsan@example.com",
|
||||
"url": "https://zhangsan.me",
|
||||
"content": "很棒的文章!",
|
||||
@@ -127,7 +127,7 @@
|
||||
| `post_slug` | string | 是 | 文章唯一标识符,应与前端组件初始化时的 `postSlug` 值一致,`window.location.origin + window.location.pathname` |
|
||||
| `post_title` | string | 否 | 文章标题,用于邮件通知内容 |
|
||||
| `post_url` | string | 否 | 文章 URL,用于邮件通知中的跳转链接 |
|
||||
| `author` | string | 是 | 评论者昵称 |
|
||||
| `name` | string | 是 | 评论者昵称 |
|
||||
| `email` | string | 是 | 评论者邮箱,需为合法邮箱格式 |
|
||||
| `url` | string | 否 | 评论者个人主页或站点地址 |
|
||||
| `content` | string | 是 | 评论内容,内部会过滤 `<script>...</script>` 片段 |
|
||||
@@ -237,18 +237,20 @@
|
||||
"adminEmail": "admin@example.com",
|
||||
"adminBadge": "博主",
|
||||
"avatarPrefix": "https://gravatar.com/avatar",
|
||||
"adminEnabled": true
|
||||
"adminEnabled": true,
|
||||
"allowedDomains": []
|
||||
}
|
||||
```
|
||||
|
||||
字段说明:
|
||||
|
||||
| 字段名 | 类型 | 说明 |
|
||||
| -------------- | ------- | ------------------------------------------------ |
|
||||
| `adminEmail` | string | 博主邮箱地址,用于在前端展示“博主”标识 |
|
||||
| `adminBadge` | string | 博主标识文字,例如 `"博主"` |
|
||||
| `avatarPrefix` | string | 头像地址前缀,如 Gravatar 或 Cravatar 镜像地址 |
|
||||
| `adminEnabled` | boolean | 是否启用博主标识相关功能 |
|
||||
| 字段名 | 类型 | 说明 |
|
||||
| -------------- | ------- | -------------------------------------------------------------------- |
|
||||
| `adminEmail` | string | 博主邮箱地址,用于在前端展示“博主”标识,并触发管理员身份验证流程 |
|
||||
| `adminBadge` | string | 博主标识文字,例如 `"博主"` |
|
||||
| `avatarPrefix` | string | 头像地址前缀,如 Gravatar 或 Cravatar 镜像地址 |
|
||||
| `adminEnabled` | boolean | 是否启用博主标识相关展示(关闭时不显示徽标,但仍可作为管理员邮箱) |
|
||||
| `allowedDomains` | Array\<string\> | 允许调用组件的域名列表,留空则不限制 |
|
||||
|
||||
### 错误响应
|
||||
|
||||
|
||||
@@ -18,6 +18,14 @@
|
||||
|
||||
开启是否显示博主标签,配置博主邮箱和标签文字,即可在评论中显示博主标签;关闭为不显示。
|
||||
|
||||
### 允许调用的域名
|
||||
|
||||
多个域名用逗号分隔,留空则不限制。设置后仅匹配域名可调用前台评论组件。
|
||||
|
||||
### 管理员评论密钥
|
||||
|
||||
设置后前台使用管理员邮箱评论需输入此密钥。
|
||||
|
||||
### 邮箱提醒服务
|
||||
|
||||
目前接入了 QQ 邮箱提醒,后续会添加其他邮箱服务。
|
||||
|
||||
@@ -29,6 +29,13 @@
|
||||
|
||||
头像前缀、博主邮箱和标识等信息由后端接口 `/api/config/comments` 提供,无需在前端进行配置。
|
||||
|
||||
当 `/admin/settings/comments` 中配置了“评论博主邮箱”时:
|
||||
|
||||
- 前台组件会将该邮箱视为“管理员邮箱”;
|
||||
- 使用该邮箱发表评论时,会在邮箱输入框失焦后触发“管理员身份验证”弹窗;
|
||||
- 验证通过后,会在浏览器本地保存一次管理员密钥(仅用于本机后续请求携带 `adminToken`);
|
||||
- 后端会在 `/api/comments` 中校验此密钥,确保管理员身份的评论需要额外验证。
|
||||
|
||||
## 实例方法
|
||||
|
||||
| 方法 | 说明 |
|
||||
|
||||
Reference in New Issue
Block a user