我试图将sriracha-admin限制为某个IP。
所以我正在做:
var admin = require('sriracha-admin');
app.use("/sriracha-admin", admin({
user:"user",
pass:"pass123"
})
);
我可以这样做:
app.use("/sriracha-admin", function(){
if(req.ip === 111.222.333.444){
return admin({
user:"user",
pass:"pass123"
});
}
});
或者我可能完全错了?
答案 0 :(得分:1)
我不知道sriracha,但快速查看显示admin()函数返回一个Express应用程序:https://github.com/hdngr/sriracha/blob/master/index.js#L104
因为Express中的中间件看起来像这样:
app.use(function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
(请参阅此处的示例:http://expressjs.com/en/guide/using-middleware.html)
...我的猜测是你的例子可能会被重写:
app.use("/sriracha-admin", admin(myoptions).use(function(req, res, next){
if(req.ip === 111.222.333.444){
//throw an exception here, or redirect, or whatever
});
});
我不确定是否在那里敲了一下那个大括号,但你有希望得到这个想法。
答案 1 :(得分:1)
我决定不要懒惰并阅读文档,我在几秒钟内就找到了答案。
如果有人正在寻找关于如何通过ip或其他任何东西来限制中间件的答案。
var ip = '1234';
app.use("/admin", function(req, res, next){
if(ip === '123'){
next();
}else{
res.sendStatus(404)
}
},
admin({
username: "user",
password: "pass"
})
);
我对Express的理解很少让我回过头来编写上面这个非常简单的代码,或者很好地解释了我的问题。 但是如果有人在寻找类似的东西,我希望这会有所帮助。