node.js Express框架中的两个静态目录(public + private)

时间:2014-07-26 22:13:20

标签: node.js express

这个想法如下:

  • 在未对用户进行身份验证时发送登录目录。
  • 发送应用程序目录一次用户登录(在这种情况下,使用护照模块)。

示例:

未记录:

请求:GET /

响应:来自 PATH_login 的index.html

登录

请求:GET /

响应:来自 PATH_app 的index.html

我尝试了这个,但它不起作用:

app.use(function(req,res,next){

    if ( req.isAuthenticated() )
    {
        // user is authenticated
        return express.static(PATH_app)
    }
    else
    {
        // user is not authenticated
        return express.static(PATH_login)
    }

});

1 个答案:

答案 0 :(得分:1)

在初始化时,您要设置应为每个请求调用进行切换的中间件函数。

您还应初始化此时要切换的每个中间件功能。

在运行时为每个请求(当您传递给app.use的函数中的代码运行时),为了转换功能转发到适当的中间件,它将调用相关的功能:

var appStatic = express.static(PATH_app);
var loginStatic = express.static(PATH_login);

app.use(function(req, res, next) {
    if (req.isAuthenticated()) {
        // user is authenticated
        return appStatic(req, res, next);
    } else {
        // user is not authenticated
        return loginStatic(req, res, next);
    }
});