是否可以向用户提供不同的主页,具体取决于他们是否已登录?
例如,我的应用目前使用:
app.use(express.static(__dirname + '/public'));
其中index.html
作为我的主页。
虽然如果用户未经过身份验证,我希望将login.html
作为主页提供,如果用户经过身份验证,我会app.html
。我会用中间件做到这一点。
可以用ExpressJS完成吗?
答案 0 :(得分:1)
您可以尝试以下方法:
app.get('/', function(req, res, next) {
try {
var contents, authenticated;
// Get user is logged-in or not.
authenticated = true/false;
if(!authenticated) {
contents = require('fs').readFileSync(require('path').join(__dirname, './login.html')).toString();
}
else {
contents = require('fs').readFileSync(require('path').join(__dirname, './index.html')).toString();
}
res.setHeader('Content-Type', 'text/html');
res.send(new Buffer(contents));
} catch(ex) {
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(ex));
}
});
答案 1 :(得分:1)
您可以使用app.get():
app.get("/", function(req,res) {
if( userLoggedIn() ) {
res.sendFile("/public/app.html",{ root : __dirname});
} else {
res.sendFile("/public/login.html",{ root : __dirname});
}
});
答案 2 :(得分:0)
您的代码行已经设置了静态公共目录,因此一切准备就绪。
使用app.get('/',function(req,res){})
映射家庭路由。使用req对象执行逻辑以确定天气认证是真还是假,然后使用res.sendFile(__dirname + '/public/filename.html');