我想阻止访问未登录任何以'/ users'开头的网址的人
这是我目前的代码:
app.use('/^users*',function (req, res, next) {
if (checkAuth(req)) {
console.log('authorization OK');
next();
} else {
console.log('authorization failed');
res.redirect('/login');
}
});
function checkAuth(req) {
console.log('req',req.url);
if (!req.session.user_id && req.url !== '/login' && req.url !== '/') {
return false;
}
return true;
};
但我的正则表达式不对。我找不到匹配“以'user'开头的所有东西”的表达式的正则表达式。这应该很容易,但事实证明比预期更困难。
根据Express API文档:
// will match paths starting with /abcd
app.use('/abcd', function (req, res, next) {
next();
})
答案 0 :(得分:2)
app.all('*/users/*', requireAuthentication, function (req, res, next){
});
以上路线将捕获从用户开始的所有类型的请求,将通过 requireAuthentication 功能,然后在 next()上执行以下功能。< / p>
答案 1 :(得分:1)
尝试app.use('/users/?*', function(){});
这应匹配以/users
答案 2 :(得分:1)
请勿使用单引号'/^users*'
使用/^\/users*
。这适用于以'/users'
开头的所有字符串。
但是,如果只想让它成为'/users/foo'
的层次结构,不需要正则表达式,您可以使用:
app.use('/users/*',function (req, res, next)