Думаю, я знаю, в чем проблема. Модуль ядра просто обрабатывает каждый запрос за вас, поэтому каждый HTTP-запрос сначала просматривает промежуточное ПО ядра, если он находит соответствующий файл html. Вам необходимо разместить
app.use(cors());
После того, как вы определили свои маршруты и определите собственный маршрут для вашего теста. html. См. Следующий пример:
var express = require('express');
var app = express();
var router = express.Router();
var cors = require('cors');
var port = process.env.PORT || 8080;
//use routes on the localhost:8080 path
app.use('/', router);
//Relevant part:
router.get('/test.html', function(req, res) {
var loggedin = true; //false if not loggedin
if (loggedin)
res.sendFile(__dirname + '/test.html');
else
res.redirect('https://www.google.com/');
})
//This needs to be after the routes
app.use(cors());
app.listen(port);
console.log('Listening at port ' + port);
Вы можете установить для входа значение false, чтобы увидеть, что произойдет, если пользователь не вошел в систему, и истину, если пользователь вошел в систему.
ОБНОВЛЕНИЕ
Чтобы сохранить, если пользователь вошел в систему, я рекомендую использовать модуль express -session: https://expressjs.com/en/resources/middleware/cookie-session.html
Вы можете включить его как следующее:
const session = require('express-session');
app.use(session({
name: 'session.sid',
secret: 'entersomepasswordhere',
resave: false,
saveUninitialized: false
}));
После аутентификации вы можете просто установить
req.session.loggedin = true;
, а затем просто проверить,
req.session.loggedin == true
Примечание: вы можете заменить loggedin любым именем переменной вам нравится, и вы также можете установить несколько файлов cookie сеанса.
В вашем случае просто установите req.session.loggedin = true перед перенаправлением на свой тест. html, а затем выполните проверку там.