На моем сервере Express 4 у меня есть функция промежуточного программного обеспечения, которая проверяет, вошел ли пользователь в систему или нет, и соответствующим образом корректирует запрос.
app.use((req, res, next) => {
const { IdToken } = req.signedCookies;
if (!IdToken) {
req.signedIn = false;
} else {
// TODO: Verify IdToken
req.signedIn = true;
}
next();
});
В настоящее время на каждом маршруте я вручную добавляю состояние входа в каждый res.render.
router.get('/', (req, res) => {
res.render('index', { signedIn: req.signedIn });
});
Могу ли я каким-то образом включать эту информацию, не добавляя ее вручную при каждом вызове res.render?





Добавьте промежуточное ПО, которое добавляет функцию req.view и функцию req.addState.
function addViewer(req, res, next) {
req.state = {}
req.addState = function(key, value) {
req.state[key] = value
}
res.view = function(viewName, moreState) {
res.render(viewName, Object.assign({}, req.state, moreState));
}
next();
}
Теперь вы можете звонить res.view вместо res.render. Обратите внимание, что вы можете сделать функцию просмотра намного более мощной, а addState - более настраиваемой.