Аутентифицируйте пользователя, затем отправьте JWT и подайте угловое приложение - PullRequest
0 голосов
/ 17 марта 2019

У меня есть угловое приложение, которое могут использовать только определенные пользователи (например, сотрудники).

Я хочу сделать что-то вроде этого:

  • пользовательские GETs /employees/login
  • сервер отвечает отображаемой сервером страницей входа (например, ejs или pug - не угловой)
  • форма пользовательских POST для /employees/login
  • сервер аутентифицирует пользователя
  • ... вот в чем проблема ... отвечать JWT, а также обслуживать угловое приложение (express.static(...))

Я знаю, как ответить JWT и получитьугловой, чтобы положить его в местном хранилище.Я также знаю, как реагировать с помощью статически обслуживаемого приложения Angular.

Но я не знаю, как сделать обе эти вещи вместе, учитывая, что Angular еще не работает в браузере.

Как мне это сделать?Мне не нужен код, просто объяснение, как это делается.Для этого варианта использования нет официальных документов.

1 Ответ

1 голос
/ 17 марта 2019

То, как я делал это в прошлом, выглядит следующим образом:

  • Приложение на стороне сервера размещает API и возвращает 401/403 для неаутентифицированных / неавторизованных запросов
  • Приложение Angular (функция запуска модуля) выполняет вызов к конечной точке профиля для получения сведений о текущем пользователе (будет возвращаться, как указано выше, если пользователь не вошел в систему). Это то, что вызывает немедленную аутентификацию пользователя, а не ожидание вызова API.
  • Приложение Angular имеет http-перехватчик, который ищет ответы 401/403 и перенаправляет на страницу входа на стороне сервера, с запрошенным параметром маршрута на стороне клиента, чтобы мы могли перенаправить шею в правильное место при успешном входе
  • На странице входа на стороне сервера есть код, который при успешном входе в систему вставляет JWT в localStorage, а затем обрабатывает перенаправление (через страницу JavaScript, никак не связанное с Angular).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...