我想通过将用户重定向回索引来保护文件夹及其内容。
我已经尝试过了,但是它只能部分起作用。
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是。因此,如果文件存在,则不会重定向,但如果文件不存在,则它将重定向。为什么是这样?
您处理静态文件的行app.use(express.static(path.join(__dirname, 'views')));
之前出现,app.get('/protected')
因此首先要对其进行匹配。
如果将静态处理程序移至代码的更高版本,则可以按需运行。
但是,我建议将静态项目拆分到一个单独的文件夹中,以防止意外泄露您可能包含在views文件夹中的ejs文件中的任何服务器端代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句