2013-09-18 4 views
1

Я использую паспорт и некоторые статические файлы .html. Я хочу включить их в виде выражений или статических файлов. Теперь я хочу, чтобы SOME .html-файлы, такие как login.html, были доступны для всех, но для других файлов вида, таких как secret.html, нужен паспорт. Я знаю, что вы можете использовать app.get('somePath', ensureAuthenticated, function (req, res, next) {} для маршрутов, но я хочу его для статических файлов.Passport.js express views

Как это сделать на халатном пути?

ответ

1

Если все "безопасных" файлы разделяют отчетливый префикс URL, например, /public/secure, вы можете use()ensureAuthenticated с этим путем:

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

В противном случае express.static() middleware не предлагаете много вариантов для контроля доступа. По большей части, предполагается, что все доступные файлы с указанного в ней пути должны быть «общественностью».

Хотя, это обычно отказываются посылать скрытые файлы, следуя стандарту * NIX о наличии . префикса:

~/path/to/.secret.html 

Далее, к фактическому служить, вы можете send the file себя в маршруте вы предложили с middlware прилагается:

app.get('/path/to/secret.html', ensureAuthenticated, function (req, res) { 
    res.sendfile(__dirname + '/path/to/.secret.html'); 
}); 

И, вы можете рассмотреть вопрос о переходе его из static() каталога,

+1

Спасибо за йо Ответ ур, но твоя вторая идея не работает. [отправить] (https://github.com/visionmedia/send), использование lib express для отправки файлов не находит файлы точек. И я думаю, что это было предназначено. – vardump

Смежные вопросы