我正在编写节点 js 应用程序,我想在我的应用程序上阻止一些 url(对所有用户关闭)。有可能这样做吗?注意:我想关闭/打开注册和身份验证。 更新: 我使用 express js 框架
问问题
2078 次
1 回答
4
您可以创建一个中间件,用于您想要阻止的路由:
var block = false;
var BlockingMiddleware = function(req, res, next) {
if (block === true)
return res.send(503); // 'Service Unavailable'
next();
};
app.get('/registration', BlockingMiddleware, function(req, res) {
// code here is only executed when block is 'false'
...
});
显然,这只是一个简单的例子。
编辑:更详细的例子:
// this could reside in a separate file
var Blocker = function() {
this.blocked = false;
};
Blocker.prototype.enableBlock = function() {
this.blocked = true;
};
Blocker.prototype.disableBlock = function() {
this.blocked = false;
};
Blocker.prototype.isBlocked = function() {
return this.blocked === true;
};
Blocker.prototype.middleware = function() {
var self = this;
return function(req, res, next) {
if (self.isBlocked())
return res.send(503);
next();
}
};
var blocker = new Blocker();
var BlockingMiddleware = blocker.middleware();
app.get('/registration', BlockingMiddleware, function(req, res) {
...
});
// to turn on blocking:
blocker.enableBlock();
// to turn off blocking:
blocker.disableBlock();
(这仍然会引入全局变量,但是如果您可以将确定“阻塞”条件的代码合并到Blocker
类中,您可能可以摆脱它们)
于 2013-11-07T09:01:24.003 回答