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); // 删除某评论