我想通过将用户重定向回索引来保护文件夹及其内容。
我试过这个,但它只是部分有效。
var express = require('express');
var path = require('path');
var http = require('http');
var app = express();
app.set('port', 8080);
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'views')));
app.get('/', function(req, res) {
res.render('index.ejs');
});
app.get('/protected/*', function(req, res, next) {
res.redirect('/');
next();
});
//activating server
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
此路由,例如“localhost:8080 / protected”和“localhost:8080 / protected / asdf”,但不是“localhost:8080 / protected / otherPage.html”。
在这种情况下,asdf不是实际文件,但是otherPage.html是。因此,如果文件存在,它不会重定向,但如果不重定向则重定向。这是为什么?
答案 0 :(得分:1)
处理静态文件app.use(express.static(path.join(__dirname, 'views')));
的行显示在app.get('/protected')
之前,因此首先匹配。
如果您将静态处理程序移动到代码中的后面,则可以根据需要使用它。
但是,我建议将静态项目拆分到一个单独的文件夹中,以防止意外泄露您可能包含在views文件夹中的ejs文件中的任何服务器端代码。