Возможно, вы не хотите использовать sendFile, вместо этого вы, вероятно, хотите использовать res.redirect, чтобы отправить пользователя в другую конечную точку. Эта конечная точка может быть вашей домашней страницей, например, но обычно лучше использовать правильный экспресс-рендеринг, а не sendFile, если вы не пытаетесь сделать что-то вроде предоставления пользователю возможности загрузить файл BLOB-объекта.
Вы можете настроить конечную точку, такую как:
const express = require('express');
const app = express();
// setup render system here...
app.use('/', (req, res) => {
res.render('home');
});
Это вызовет рендер на домашнем шаблоне. Для настройки движка шаблонов вы можете использовать что-то вроде express-hbs или другие движки рендеринга. Это позволит вам вставить значения в HTML перед его возвратом, что может быть полезно, если вы хотите добавить сообщение об ошибке.
После настройки вы можете создать шаблон, который называется что-то вроде home.hbs (местоположение и расширение будут зависеть от вашей библиотеки и настроек).
Затем вы можете использовать экспресс-сеанс для проверки сеанса.
app.use('/secured', (req, res) => {
if (req.session) {
// We have a session! Now you can validate it to check it's a good session
} else {
// No session at all, redirect them to the home screen.
// You might want to make this the login screen instead.
res.redirect('/');
}
});
Некоторый окончательный демонстрационный код может выглядеть следующим образом
const express = require('express');
const app = express();
// Setup express session...
const session = require('express-session');
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}));
// Setup the vie engine...
var hbs = require('express-hbs');
// Use `.hbs` for extensions and find partials in `views/partials`.
app.engine('hbs', hbs.express4({
partialsDir: __dirname + '/views/partials'
}));
app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');
// Place a file called `views/home.hbs` in the views folder at the top level of your project.
// Fill it with some html, all html is valid, handlebars just adds additional features for you.
// A public route which requires no session
app.use('/', (req, res) => {
// Renders "views/home.hbs"
res.render('home');
});
// A secured route that requires a session
app.use('/secured', (req, res) => {
if (req.session) {
// We have a session! Now you can validate it to check it's a good session
} else {
// No session at all, redirect them to the home screen.
// You might want to make this the login screen instead.
res.redirect('/');
}
});
Обратите внимание, я на самом деле не запускал этот код, поэтому может быть несколько синтаксических ошибок и тому подобное.