2015-03-02 3 views
2

У меня есть приложение-узел, работающее как среда веб-приложения, и я использую Stormpath для аутентификации.NodeJS и Express: добавление промежуточного промежуточного ПО к статическому пути

Сторм путь дает возможность защитить маршрут с несколькими промежуточных программным, , например:

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

То, что я хочу сделать, это добавить authenticationRequired в качестве промежуточного слоя для статического определения экспресса:

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

Помощь?

ответ

3

ли просто:

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

Это будет добавить stormpath.auth_fn и express.static(__dirname + '/public') промежуточное программное к / пути и, следовательно, будет защищать каждый маршрут.

+1

... что то же самое, как вызов 'app.use()' дважды, но с одним аргументом. Больше кода, но большей удобочитаемости. – gustavohenke

+0

И, если OP идет таким образом, он защитит каждый маршрут, что не указано в вопросе. Может быть, стоит отметить это в ответе. – gustavohenke

+0

@ gustavohenke Да, это то же самое, что использовать 'app.use()' дважды. ИМХО это вопрос вкуса, не более удобочитаемости. – alexpods

0

Это работает для меня с экспресс^4.13.4 и Stormpath^3.1.2

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