2017-12-30 27 views
1

Mein Problem stammt ausschließlich um die/Route. Ich denke, das ist die Wurzelroute. Wenn ein Benutzer eine Verbindung zu meiner Site herstellt, überprüfe ich, ob Sitzungsdaten für den genannten Benutzer vorhanden sind, damit er beim Schließen des Browsers nicht immer neu anmelden muss. Wenn für den Benutzer keine Sitzungsdaten vorhanden sind, wird meine Website an den Anmelde-Router weitergeleitet.Root-Route, die nicht in Express umleiten

Lassen Sie uns so tun, als wäre meine Website www.example.com. Wenn ich zu www.example.com/buy gehe und keine Sitzungsdaten für den Benutzer habe, wird die Website automatisch wie erwartet auf www.example.com/signup umgeleitet. Das gleiche passiert, wenn ich www.example.com/sell eintippte und keine Sitzungsdaten existieren. Aber wenn ich nur www.example.com eintippte und es noch keine Sitzungsdaten gibt, wird die URL nicht zu www.example.com/signup umgeleitet.

Warum gibt es diese "spezielle" Behandlung der Wurzelroute, und wie kann ich dafür sorgen, dass sie dem gleichen Verhalten folgt wie die anderen Routen?

-Code-Schnipsel aus meinem server.js, die ich bezieht sich auf die Frage denken:

app.get('/session', (req, res) => { 
    res.send(req.session.auth); 
}) 
.get('/signup', (req, res) => { 
    if (!req.session.auth) { 
    res.sendFile(path.join(__dirname, 'client/public/index.html')); 
    } else { 
    return res.redirect('/'); 
    } 
}) 
.get('*', (req, res) => { 
    if (req.session.auth) { 
    res.sendFile(path.join(__dirname, 'client/public/index.html')); 
    } else { 
    return res.redirect('/signup'); 
    } 
}); 

volle Seite von server.js

const express = require('express'), 
    app = express(), 
    bodyParser = require('body-parser'), 
    path = require('path'), 
    initDatabase = require('./db/dbConfig'), 
    port = process.env.PORT || 9000, 
    io = require('socket.io').listen(app.listen(port,() => { 
    initDatabase(); 
    console.log('Successfully connected to port ', port); 
    })), 
    session = require('express-session'), 
    MySQLStore = require('express-mysql-session')(session), 
    sessionStore = new MySQLStore({ 
    host: require('./actualKeys').host, 
    port: 3306, 
    user: require('./actualKeys').username, 
    password: require('./actualKeys').password, 
    database: require('./actualKeys').database, 
    checkExpirationInterval: 60000, 
    expiration: 43200000, 
    }), 
    users = {}, 
    rooms = {}; 

// express 

app.use(express.static('client/build')) 
.use(bodyParser.urlencoded({ 
    extended: true, 
})) 
.use(bodyParser.json()) 
.use(session({ 
    secret: require('./actualKeys').sessionCode, 
    store: sessionStore, 
    resave: false, 
    saveUninitialized: true, 
})); 

require('./server/routers/router')(app); 

app.get('/session', (req, res) => { 
    res.send(req.session.auth); 
}) 
.get('/signup', (req, res) => { 
    if (!req.session.auth) { 
    res.sendFile(path.join(__dirname, 'client/public/index.html')); 
    } else { 
    return res.redirect('/'); 
    } 
}) 
.get('*', (req, res) => { 
    if (req.session.auth) { 
    res.sendFile(path.join(__dirname, 'client/public/index.html')); 
    } else { 
    return res.redirect('/signup'); 
    } 
}); 

Danke

Antwort

0

Hoffentlich andere mit ähnlichen helfen Probleme. Ich konnte meine Antwort von einem älteren Beitrag finden. Ich musste die index-Eigenschaft mit einem falschen Wert zu express.static hinzufügen.

express.static handling root url request