2016-06-02 6 views
0

Ist es möglich, dem Benutzer eine andere Homepage anzubieten, je nachdem, ob sie eingeloggt sind oder nicht?So bedienen Sie eine andere Homepage mit Express?

Zum Beispiel meine App nutzt derzeit:

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

Welche index.html als meine Homepage dient.

Obwohl ich login.html als meine Homepage dienen möchte, wenn der Benutzer nicht authentifiziert wird, und app.html, wenn der Benutzer authentifiziert wird. Ich würde das mit Middleware machen.

Kann dies mit ExpressJS gemacht werden?

Antwort

1

können Sie versuchen, den folgenden Ansatz:

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

Sie können app.get() verwenden:

app.get("/", function(req,res) { 
    if(userLoggedIn()) { 
     res.sendFile("/public/app.html",{ root : __dirname}); 
    } else { 
     res.sendFile("/public/login.html",{ root : __dirname}); 
    } 
}); 
0

Ihre Codezeile bereits die statische öffentliche Verzeichnis gesetzt daher ist alles bereit.

Verwenden Sie app.get('/',function(req,res){}), um das Home-Routing zuzuordnen. Führen Sie Ihre Logik mit dem req-Objekt aus, um zu bestimmen, ob die Wetterauthentifizierung wahr oder falsch ist, und verwenden Sie die Datei Ihrer Wahl und senden Sie sie zurück an res.sendFile(__dirname + '/public/filename.html');

Verwandte Themen