我目前正在尝试将路由限制为尚未登录的用户。我的主要问题是,即使我使用get方法定义页面,例如:
app.get('/alpha/information', isLoggedIn,
function(req, res){
res.sendFile(path.join(__dirname + '/alpha/pages/Example.html'));
});
用户只需将网址编辑为:http://localhost:3000/alpha/pages/Example.html
并访问该网页即可。现在我已经阅读了几个类似的问题,但我找不到答案。其中一些受到启发的是:Q1,Q2,Q3。尽管如此,我无法找到解决问题的方法。
我目前的文件结构是: FileStructureLink
我正在尝试限制对 Example.html,ExampleTwo.html 和 blabla.html
的访问我正在使用此代码来设置请求,但我猜他们可能不对:
app.use(express.static(path.join(__dirname, 'Alpha')));
app.use(express.static(path.join(__dirname, '/')));
app.use('/', express.static(__dirname + '/login.html'));
此app.use('/', express.static(__dirname + '/login.html'));
专门用于将默认localhost:3000/
加载为localhost:3000/login
如何限制对所有静态html文件的访问,而无需为每个文件编写路由?
中间件功能:
function isLoggedIn(req, res, next) {
console.log('here is Authenticated', req.isAuthenticated())
if (req.isAuthenticated()){
return next();
}
res.redirect('/login');
}
答案 0 :(得分:0)
您正在将完整的Alpha目录设为公共目录,因此可以访问所有内容。此技术通常用于提供js / css / images。
您可以使用变量路由来获取html文件:
url:localhost:3000 / alpha / Example
app.get('/alpha/:name', function(req, res) {
var page = req.params.name;
res.sendFile(path.join(__dirname + '/alpha/pages/' + page + '.html'));
})
注意大写
答案 1 :(得分:0)
以下是如何操作的概念:
var express = require('express'),
path = require('path');
app = express();
app.use(function(req, res, next) {
// Use your req.isAuthenticated logic here, that's all
console.log('I am called before static middleware.');
return next();
});
app.use(express.static( path.join(__dirname, 'public')));
app.use(function(req, res, next) {
console.log('I am called after static middleware.');
return next();
});
app.get('/', showClientRequest, function(req, res) {
res.send('Hi! I am direct message from server :)');
});
function showClientRequest(req, res, next) {
console.log('You can do something here too...');
return next();
}
app.listen(3000);
完整的回购:
克隆节点作弊express_server_restrict_static_files,运行node app
后跟npm install express
。
快乐帮助!