Для любого веб-приложения, которое достигло определенного размера, такая миграция является единственным способом продвижения вперед, поскольку приложение слишком велико, чтобы его можно было заменить сразу. Таким образом, сосуществование между старыми и новыми страницами должно быть достигнуто.
Самый простой подход состоит в том, что каждая страница либо полностью JSP, либо полностью Angular, то есть не содержит никакого сочетания технологий. Как вы уже определили, макет Angular должен быть достаточно близок к макету JSP, чтобы пользователи воспринимали его как одно приложение. Но каждый раз, когда пользователь переключается с JSP на страницу Angular, он / она испытывает задержку при загрузке приложения Angular и всех связанных с ним данных. Потребуются некоторые усилия, чтобы сделать go достаточно быстрым.
Если вам нужно совместно использовать состояние (в дополнение к аутентификации), вам нужно будет реализовать API в контейнере JSP, чтобы Angular приложение может получить состояние и изменить его. Вы, вероятно, обнаружите, что необходимо предоставить общий доступ только к небольшому подмножеству состояний.
Для аутентификации простейшая настройка заключается в том, если приложение Angular может получить доступ ко всем API-интерфейсам с помощью Cook Cooking ie. Тогда вам не нужно ничего делать. Никакой новой страницы аутентификации не требуется, и JWT не нужно передавать.
Если требуется JWT, лучшее решение - настроить выделенный IAM (управление идентификацией и доступом), отвечающий за аутентификацию. Он реализует страницу входа в систему и выдаст JWT. Если неаутентифицированный пользователь запрашивает страницу JSP, он / она перенаправляется в IAM, входит в систему и перенаправляется обратно в приложение JSP. Приложение JSP проверяет логин. Если этот же пользователь позже откроет страницу Angular, а странице Angular потребуется доступ к API, пользователь сначала будет перенаправлен в IAM. Поскольку IAM предоставляет средство единого входа, он обнаружит действительный сеанс пользователя и немедленно выдаст JWT (или код аутентификации), не показывая страницу входа в систему. В обоих случаях используется поток OAUTH 2 / OID C. И оба случая хорошо поддерживаются многими фреймворками и библиотеками. OID C также включает функции для синхронизации выхода из системы.