如何使用Express提供不同的主页?

时间:2016-06-02 04:49:32

标签: node.js express

是否可以向用户提供不同的主页,具体取决于他们是否已登录?

例如,我的应用目前使用:

app.use(express.static(__dirname + '/public'));

其中index.html作为我的主页。

虽然如果用户未经过身份验证,我希望将login.html作为主页提供,如果用户经过身份验证,我会app.html。我会用中间件做到这一点。

可以用ExpressJS完成吗?

3 个答案:

答案 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');

返回选择的文件