Для личного проекта я разрабатываю портал, который предоставляет некоторые услуги только подключенным пользователям. Когда вы не подключены, вы перенаправляетесь на keycloak, который управляет потоком аутентификации (логин, восстановление пароля, ....) и перенаправляет в мое приложение angular с токеном, тогда для каждого вызова моего веб-сервиса я предоставляю токен, который проверяется для каждого запроса между моим веб-сервисом и keycloak.
Я разработал свое приложение следующим образом: (действительно простой вид)
Проблема, с которой я столкнулся, заключается в том, что мое приложение angular сильно зависит от Keycloak и моего веб-сервиса. Я хотел бы, чтобы мое приложение было устойчивым и было готово, если хотя бы клавиатурный ключ и / или мой веб-сервис отключены, и в идеале, если произойдет какая-либо ошибка или нежелательное поведение (например, ошибка 500)
Я вижу несколько вещей, которые могу сделать :
- Я мог бы создать анонимный макет (чтобы любой мог получить к нему доступ напрямую) в моем приложении angular с одной страницей, посвященной перенаправлению, которая сначала проверила бы доступность keycloak и моего веб-сервиса (простой http запрос, чтобы увидеть, если я получу код состояния 200), я мог бы сделать это в al oop (скажем, каждые 2 секунды) с информационным сообщением, показывающим статус, а затем, когда оба в порядке, перенаправив в приложение keycloak.
- Я мог бы создать перехватчик, который будет отображать оверлей каждый раз, когда я получаю ответ с кодом состояния 401 в течение x секунд, а затем перенаправлять на страницу входа в систему keycloak.
- Я мог бы показать универсальный модал c с информативным сообщением, когда Я получаю ответ с любым другим кодом состояния 400 или 500, который можно закрыть с помощью кнопки, приглашающей пользователя Расскажу об этом позже.
Это те идеи, которые у меня есть сейчас, но я не уверен, что это правильный путь.
Я не нашел ни одного соответствующего учебника или статьи, объясняющей как сделать это правильно (может быть, я использую плохие ключевые слова)
У вас есть идея?