快递中的静态路由和用户验证

时间:2017-01-19 21:06:02

标签: javascript node.js express

我正在尝试执行以下操作。

  1. 所有/请求应该来自/ public文件夹中的服务器文件。 (例如http://my.host/docu/index.html - > /public/docu/index.html)
  2. 如果用户未获得授权,则应将其重定向到" oauth / login"路线
  3. 这里我尝试了什么?但它并没有像预期的那样工作:

    var staticMiddlewarePrivate = express['static'](__dirname + '/public');
    
    app.use(/^\/(?!oauth).*/, function(req, res, next) {
        if (req.user == null) {
            console.log("doing redirect as not login");
            res.redirect('/oauth/login');
            return;
        }
        console.log("user logged in");
        staticMiddlewarePrivate(req, res, next);
    });
    

    我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

诀窍是在动态之后放置静态路由:

app.use(/^\/(?!oauth).*/, function(req, res, next) {
    if (req.user == null) {
        console.log("doing redirect as not login");
        res.redirect('/oauth/login');
        return;
    }
    console.log("user logged in");
    next()
});
app.use(express.static(__dirname + '/public') );