From f50df2afb4898fe9ad93584e4114bfc5a1bbfbba Mon Sep 17 00:00:00 2001 From: TakWolf Date: Sun, 8 May 2016 09:47:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=93=8D=E4=BD=9C=E9=99=90?= =?UTF-8?q?=E5=88=B6=E6=B8=B2=E6=9F=93=E9=97=AE=E9=A2=98=EF=BC=9A1.?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E7=8A=B6=E6=80=81=E5=90=97=E6=94=B9=E4=B8=BA?= =?UTF-8?q?403=20=202.=E5=89=8D=E6=AE=B5=E8=BF=94=E5=9B=9E=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=A1=B5=E9=9D=A2=EF=BC=8Capi=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E5=8C=96=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api_router_v1.js | 4 ++-- middlewares/limit.js | 9 +++++++-- web_router.js | 4 ++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/api_router_v1.js b/api_router_v1.js index bac1edb..bcce907 100644 --- a/api_router_v1.js +++ b/api_router_v1.js @@ -15,7 +15,7 @@ var router = express.Router(); // 主题 router.get('/topics', topicController.index); router.get('/topic/:id', middleware.tryAuth, topicController.show); -router.post('/topics', middleware.auth, limit.peruserperday('create_topic', config.create_post_per_day), topicController.create); +router.post('/topics', middleware.auth, limit.peruserperday('create_topic', config.create_post_per_day, true), topicController.create); // 主题收藏 @@ -32,7 +32,7 @@ router.get('/user/:loginname', userController.show); router.post('/accesstoken', middleware.auth, toolsController.accesstoken); // 评论 -router.post('/topic/:topic_id/replies', middleware.auth, limit.peruserperday('create_reply', config.create_reply_per_day), replyController.create); +router.post('/topic/:topic_id/replies', middleware.auth, limit.peruserperday('create_reply', config.create_reply_per_day, true), replyController.create); router.post('/reply/:reply_id/ups', middleware.auth, replyController.ups); // 通知 diff --git a/middlewares/limit.js b/middlewares/limit.js index 2b520f5..f3fa8d1 100644 --- a/middlewares/limit.js +++ b/middlewares/limit.js @@ -5,7 +5,7 @@ var moment = require('moment'); var SEPARATOR = '^_^@T_T'; var makePerDayLimiter = function (identityName, identityFn) { - return function (name, limitCount) { + return function (name, limitCount, showJson) { // showJson = true 表示调用来自API并返回结构化数据;否则表示调用来自前段并渲染错误页面 return function (req, res, next) { var identity = identityFn(req); var YYYYMMDD = moment().format('YYYYMMDD'); @@ -23,7 +23,12 @@ var makePerDayLimiter = function (identityName, identityFn) { res.set('X-RateLimit-Remaining', limitCount - count); next(); } else { - res.send('ratelimit forbidden. limit is ' + limitCount + ' per day.'); + res.status(403); + if (showJson) { + res.send({success: false, error_msg: '频率限制:当前操作每天可以进行 ' + limitCount + ' 次'}); + } else { + res.render('notify/notify', { error: '频率限制:当前操作每天可以进行 ' + limitCount + ' 次'}); + } } }); }; diff --git a/web_router.js b/web_router.js index 36dae54..814e5af 100644 --- a/web_router.js +++ b/web_router.js @@ -82,14 +82,14 @@ router.post('/topic/:tid/lock', auth.adminRequired, topic.lock); // 锁定主题 router.post('/topic/:tid/delete', auth.userRequired, topic.delete); // 保存新建的文章 -router.post('/topic/create', auth.userRequired, limit.peruserperday('create_topic', config.create_post_per_day), topic.put); +router.post('/topic/create', auth.userRequired, limit.peruserperday('create_topic', config.create_post_per_day, false), topic.put); router.post('/topic/:tid/edit', auth.userRequired, topic.update); router.post('/topic/collect', auth.userRequired, topic.collect); // 关注某话题 router.post('/topic/de_collect', auth.userRequired, topic.de_collect); // 取消关注某话题 // reply controller -router.post('/:topic_id/reply', auth.userRequired, limit.peruserperday('create_reply', config.create_reply_per_day), reply.add); // 提交一级回复 +router.post('/:topic_id/reply', auth.userRequired, limit.peruserperday('create_reply', config.create_reply_per_day, false), reply.add); // 提交一级回复 router.get('/reply/:reply_id/edit', auth.userRequired, reply.showEdit); // 修改自己的评论页 router.post('/reply/:reply_id/edit', auth.userRequired, reply.update); // 修改某评论 router.post('/reply/:reply_id/delete', auth.userRequired, reply.delete); // 删除某评论