From c6ab1ea75df5eabefbf20d87c9ebdda59f177b76 Mon Sep 17 00:00:00 2001 From: tone <3341154833@qq.com> Date: Sat, 31 Aug 2024 14:50:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=E5=8D=9A?= =?UTF-8?q?=E5=AE=A2=E8=AF=84=E8=AE=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/src/APIs/GetBlogComment.ts | 28 +++++++++++++++++++ .../Plugs/Middleware/CheckCaptchaPassed.ts | 17 +++++++++++ Server/src/Server/Server.ts | 2 ++ 3 files changed, 47 insertions(+) create mode 100644 Server/src/APIs/GetBlogComment.ts create mode 100644 Server/src/Plugs/Middleware/CheckCaptchaPassed.ts diff --git a/Server/src/APIs/GetBlogComment.ts b/Server/src/APIs/GetBlogComment.ts new file mode 100644 index 0000000..043ccca --- /dev/null +++ b/Server/src/APIs/GetBlogComment.ts @@ -0,0 +1,28 @@ +import { API } from "../Plugs/API/API"; +import ServerStdResponse from "../ServerStdResponse"; +import MySQLConnection from '../Plugs/MySQLConnection' + +// 获取博客评论 +class GetBlogComment extends API { + constructor() { + super('GET', '/blogComment'); + } + + private pageSize = 100; + + public async onRequset(data: any, res: any) { + let { bloguuid, page = 1 } = data; + if (!bloguuid || bloguuid.length != 32 || page < 1) { + return res.json(ServerStdResponse.INVALID_PARAMS); + } + + let blogCommentRes = await MySQLConnection.execute('SELECT content, name, ip_address, time FROM blog_comment WHERE uuid = ? AND display = 1 ORDER BY time DESC LIMIT ? OFFSET ?;', [bloguuid, this.pageSize, (page - 1) * this.pageSize]); + if (!blogCommentRes) { + this.logger.error('获取博客评论时,数据库发生错误'); + return res.json(ServerStdResponse.SERVER_ERROR); + } + return res.json({ ...ServerStdResponse.OK, data: blogCommentRes }); + } +} + +export default GetBlogComment; \ No newline at end of file diff --git a/Server/src/Plugs/Middleware/CheckCaptchaPassed.ts b/Server/src/Plugs/Middleware/CheckCaptchaPassed.ts new file mode 100644 index 0000000..81c45a1 --- /dev/null +++ b/Server/src/Plugs/Middleware/CheckCaptchaPassed.ts @@ -0,0 +1,17 @@ +import { Request, Response, NextFunction } from "express"; +import ServerStdResponse from "../../ServerStdResponse"; +import Logger from "../Logger"; +import captchaSession from "../Service/captchaSession"; +const logger = new Logger("CheckCaptcha"); +const CheckCaptchaPassed = async (req: Request, res: Response, next: NextFunction) => { + let session = req.query.session || req.body.session || ''; + if (session) { + if (await captchaSession.isPassed(session)) + return next(); + } + let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.ip; + logger.info(`API[${req.method}][${req.url.split('?')[0]}] 请求人机验证未通过[${ip}]`); + res.json(ServerStdResponse.AUTH_ERROR); +} + +export default CheckCaptchaPassed; \ No newline at end of file diff --git a/Server/src/Server/Server.ts b/Server/src/Server/Server.ts index 878f505..ca3f815 100644 --- a/Server/src/Server/Server.ts +++ b/Server/src/Server/Server.ts @@ -12,6 +12,7 @@ import GetBlogList from "../APIs/GetBlogList"; import GetBlogContent from "../APIs/GetBlogContent"; import BlogLike from "../APIs/BlogLike"; import BlogComment from "../APIs/BlogComment"; +import GetBlogComment from "../APIs/GetBlogComment"; import GetCaptcha from "../APIs/GetCaptcha"; import CheckCaptcha from "../APIs/CheckCaptcha"; @@ -32,6 +33,7 @@ class Server { this.apiLoader.add(GetBlogContent); this.apiLoader.add(BlogLike); this.apiLoader.add(BlogComment); + this.apiLoader.add(GetBlogComment); this.apiLoader.add(GetCaptcha); this.apiLoader.add(CheckCaptcha);