Доступ или передача данных экспресс-сессии в Angular 6 - PullRequest
0 голосов
/ 07 сентября 2018

В наших настройках мы используем Nginx, Node 8.11 и Angular CLI 6, и я пытаюсь вернуть значения, установленные в Express, во внешний интерфейс Angular 6.

Я думаю, что у меня может быть уникальная настройка, и мне нужна небольшая помощь, чтобы продолжить. В нашей настройке у нас есть требуемая компанией страница входа, на которую направляются все приложения. Когда пользователь успешно входит на эту страницу, он перенаправляется обратно на вызывающий сайт и затем продолжает обычную обработку.

Поток такой;

First: Пользователь вводит наш внутренний URL - https://myawesome.company.com/myapp Мы используем nginx и узел. Затем в нашем узле server.js мы настраиваем сеанс в экспрессе так:

// setup our session managment
var session = require('express-session');
app.use(session({
   name: config.ses_cookie_name,
   resave: true,
   saveUninitialized: true,
   secret: config.session_secret
}));

Шаг 2: Наш узел server.js затем вызывает маршрут / процесс - например, app.use (auth.verifyuser ()); , который вызывает страницу входа в систему компании и который в свою очередь будет проверять пользователей (или нет) и отправлять назад информация о пользователе.

Шаг 3. Как только приложение узла получает действительную информацию о пользователе со страницы входа в компанию, оно запускается и направляет пользователя в основное угловое приложение.

app.get('*', (req, res) => {
     res.sendFile(path.resolve('dist/index.html'));
    }
});

Моя главная проблема заключается в том, что на данный момент у меня есть кредиты для пользователя (имя пользователя, уровень и т. Д.) ДО того, как я начну угловую часть приложения. Однако я не могу понять, как передать эту информацию в приложение Angular ИЛИ, если angular уже имеет доступ к этим переменным. Любой совет будет принят во внимание.

Кроме того, я не эксперт и учусь на ходу.

Спасибо!

1 Ответ

0 голосов
/ 07 сентября 2018

Нет, вы не можете отправлять какие-либо данные, используя метод res.sendFile(...) вместе с имеющимся у вас html-кодом. Вместо этого вы можете использовать метод res.render, подобный этому,

res.render('index', { loggedInUser: loggedInUserObj }, function(err, html) {
  // ...
});

Примечание: в приведенном выше примере предположим, что loggedInUserObj хранит ваши данные пользователя.

Чтобы использовать это, вам нужно установить view engine следующим образом:

app.set('view engine', 'ejs');  

И затем вы можете определить свою index страницу (которую вы визуализируете, используя res.render) следующим образом: здесь я дам объект loggedInUserObj, чтобы убедиться, что наши данные передаются.

 <%- JSON.stringify(loggedInUserObj) %>

Надеюсь, это поможет!

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