修复操作限制渲染问题:1.返回状态吗改为403 2.前段返回错误页面,api返回结构化数据

This commit is contained in:
TakWolf 2016-05-08 09:47:13 +08:00
parent 29bc337577
commit f50df2afb4
3 changed files with 11 additions and 6 deletions

View File

@ -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);
// 通知

View File

@ -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 + ' 次'});
}
}
});
};

View File

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