【问题标题】:NodeJS and Express: Add auth middleware to static pathNodeJS 和 Express:将身份验证中间件添加到静态路径
【发布时间】:2015-03-02 17:23:43
【问题描述】:

我有一个 node 应用程序作为 web 应用程序框架运行 express,我使用 Stormpath 进行身份验证。

Storm path 提供了使用多个中间件保护路由的能力, 例如:

router.get('/user_data_api', stormpath.apiAuthenticationRequired, function(req, res) {
        res.send('hello you are authenticated!");
     });
});

我要做的是将authenticationRequired作为中间件添加到express的静态定义中:

app.use(express.static(__dirname + '/public'));

这可以通过向静态资产添加路由来实现,所以如果我有一个文件 ./public/index.html 我可以像这样设置路由:

app.use('/secured-assets', 
               stormpath.auth_fn, express.static(__dirname + '/public'));

但随后文件将在

www.mydomain.com/secured-assets/index.html

我想要它在

www.mydomain.com/index.html

帮助?

【问题讨论】:

    标签: node.js express stormpath


    【解决方案1】:

    只做:

    app.use(stormpath.auth_fn, express.static(__dirname + '/public'));
    

    它将stormpath.auth_fnexpress.static(__dirname + '/public') 中间件添加到/ 路径,因此将保护每条路由。

    【讨论】:

    • ...与调用app.use() 两次相同,但只有一个参数。更多代码,但更易读。
    • 而且,如果 OP 这样做,它将保护每条路线,问题中未指定。也许在答案中值得注意这一点。
    • @gustavohenke 是的,这与使用两次app.use() 相同。恕我直言,这是一个品味问题,而不是更易读。
    【解决方案2】:

    这对我来说适用于 Express ^4.13.4 和 Stormpath ^3.1.2

    app.use(stormpath.loginRequired, express.static(__dirname + '/public'));
    

    【讨论】:

      猜你喜欢
      • 2018-06-03
      • 2017-12-09
      • 2017-05-18
      • 2017-10-14
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多