Node.js Express - 阻止访问某些URL

时间:2014-12-14 04:53:00

标签: node.js express

我想阻止访问未登录任何以'/ 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();
})

3 个答案:

答案 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)

app.use express API reference