Как передать информацию заголовка запроса в приложение Angular6 (JWT отправить по заголовку запроса) - PullRequest
1 голос
/ 04 апреля 2019
  • Управление пользователями / Управление сеансами через другое внешнее приложение (например, брандмауэр веб-приложений WAF)
  • внешнее приложение отправляет JWT с информацией о пользователе в заголовке запроса в приложение
  • Приложение Angular6 нуждается вИнформация из заголовка запроса ... ???

Приложение Angular должно отображать некоторую информацию о пользователе.Управление пользователями осуществляется внешним приложением, которое перенаправляет только аутентифицированных пользователей в приложение Angular и добавляет информацию о пользователе в заголовок запроса.Сервисного API для запроса информации о пользователе не существует.Информация о пользователе отправляется в приложение только через заголовок запроса (доступно только на стороне внешнего сервера).

Как я могу прочитать / передать информацию о пользователе в угловое приложение?

Намерение: * Экспресс-прокси для обслуживания угловых приложений и пересылки информации заголовка запроса.Потому что у angular нет возможности прочитать заголовок запроса.

Идея состоит в том, чтобы написать прокси для обслуживания приложения angular.Этот прокси, например, экспресс-приложение, может прочитать заголовок запроса и передать его в угловое приложение.

Я могу обслуживать угловое приложение, но (1) как я могу передать информацию заголовка?-> Как передать переменные / данные в приложение Angular?


Не так важно Вопрос, потому что есть несколько библиотек: (2) как декодировать jwt и проверять его (подписанный jwt) и передавать тольконекоторая информация из полезной нагрузки.

Для сервера углового приложения мой экспресс-код выглядит следующим образом:


const html = __dirname + '/angularApp/dist/angularApp';

const http = require('http');
const port = 4000;

// Express
const bodyParser = require('body-parser');
const compression = require('compression');
const express = require('express');
var app = express();

app // config to serve angular app
    .use(compression())
    .use(bodyParser.json())
    // Static content
    .use(express.static(html));

app // Start server
    .listen(port, function () {
        console.log('Port: ' + port);
        console.log('Html: ' + html);
    });

Структура файла:

- root
-- server.js
-- angularApp
--- dist
---- angularApp
----- ... angular app build files
--- ... angular app files

Ожидаемый результат: Angular App отображает пользовательские данные, которые отправляются через заголовок запроса.

Фактический результат: Angular App не получает никаких пользовательских данных.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Есть несколько вещей, на которые я хотел бы обратить ваше внимание на улучшение.

Вы не должны использовать экспресс для обслуживания Angular App, если только вы не используете Angular Universal для SSR.Потому что использование Express для обслуживания угловых приложений совсем не оптимизировано.

Вам не нужно декодировать JWT для отображения информации о пользователе.Следовательно, лучше всего создать прокси-интерфейс API с использованием Nginx, который будет вызываться клиентом для получения JWT, когда код Angular выполняется на стороне клиента.

0 голосов
/ 04 апреля 2019

Я бы предложил библиотеку для декодирования jwt, например:

npm install jsonwebtoken

Я не вижу кода для обработки входящих запросов, вы его пропустили?

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