cod*_*Joe 3 html javascript node.js express
我目前正在尝试将路由限制为尚未登录的用户。我的主要问题是,即使我使用get方法定义页面,例如:
app.get('/alpha/information', isLoggedIn,
function(req, res){
res.sendFile(path.join(__dirname + '/alpha/pages/Example.html'));
});
Run Code Online (Sandbox Code Playgroud)
用户可以仅将URL编辑为:http://localhost:3000/alpha/pages/Example.html并访问该页面。现在,我已经阅读了关于SO的几个类似问题,但找不到答案。我受到启发的有一些: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'));
Run Code Online (Sandbox Code Playgroud)
这 app.use('/', express.static(__dirname + '/login.html'));专门用于使默认localhost:3000/负载为localhost:3000/login
如何限制对所有静态html文件的访问而不必为每个静态html文件编写路由?
中间件功能:
function isLoggedIn(req, res, next) {
console.log('here is Authenticated', req.isAuthenticated())
if (req.isAuthenticated()){
return next();
}
res.redirect('/login');
}
Run Code Online (Sandbox Code Playgroud)
您可以通过将其他中间件附加到它来限制快速静态中间件。
var express = require("express");
var path = require( "path" );
var app = express();
function isLoggedIn( req, res, next ) {
console.log("trying restricted file");
next();
}
app.use( '/Alpha', isLoggedIn, express.static( path.join( __dirname, 'Alpha' ) ) );
app.use( express.static( path.join( __dirname, 'anonymous' ) ) );
app.listen( 3000 );
Run Code Online (Sandbox Code Playgroud)
通过每次调用此操作,localhost:3000/restricted/*将通过isLoggedIn函数。
编辑:根据您的文件结构修改代码。
您正在将完整的 Alpha 目录设置为公共目录,因此所有内容都可以访问。这种技术通常用于服务 js/css/images。
您可以利用变量路由来获取 html 文件:
网址:本地主机:3000/alpha/示例
app.get('/alpha/:name', function(req, res) {
var page = req.params.name;
res.sendFile(path.join(__dirname + '/alpha/pages/' + page + '.html'));
})
Run Code Online (Sandbox Code Playgroud)
注意大小写
| 归档时间: |
|
| 查看次数: |
2959 次 |
| 最近记录: |