Есть ли у пользователя / веб-сайта доступ к переменным express res.locals? - PullRequest
0 голосов
/ 17 июня 2020

В настоящее время я создаю приложение Node с Express и Passport и использую это промежуточное ПО на моем основном сервере. js файл:

// Function to protect urls
function isProtected(req, res, next) {
    if (req.isAuthenticated()) {
        // User is logged in
        res.locals.user = req.user;
        return next();
    }

    // User is not logged in. Redirect to login.
    res.redirect('login');
}

app.use('/protected_path', isProtected, protectedRouter);

Мои вопросы нацелены на эту строку:

res.locals.user = req.user;

Пользовательский объект передается в res.locals, поэтому его можно использовать для заполнения таких полей, как имя, роль пользователя, дата регистрации, ...

Есть ли способ, которым пользователь / веб-сайт / Программа api (например, Postman) может получить доступ к переменным res.locals? Внутри объекта req.user могут быть какие-то конфиденциальные данные, и я просто хочу использовать res.locals для получения данных, которые будут отображаться в представлениях, таких как страница профиля.

Я мог бы просто передать необходимое

Мой последний подход заключался в том, чтобы «занести в черный список» ненужные переменные, описанные здесь: SO: Как опустить определенные c свойства из объекта в JavaScript

Может ли пользователь получить доступ к переменным res.locals и, следовательно, будет ли это иметь отношение к безопасности? В противном случае я бы предпочел свое текущее решение.

1 Ответ

1 голос
/ 17 июня 2020

Нет, они не могут получить доступ к res.locals, если вы сами не предоставите их им в виде или каким-либо другим способом. Некоторые подробности можно найти в документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...