Я думаю, что главная проблема здесь в том, что вы смешиваете две части веб-страницы (по крайней мере, в соответствии с тем, что задано в HTML) и рассматриваете их обе как конфиденциальную информацию.
У вас есть две основныечасти веб-страницы - первая - это формат отображения, а вторая - данные.Предположение в клиентском рендеринге / одностраничных приложениях заключается в том, что сам формат не является конфиденциальным, и необходимо защищать только данные.
Если это так, вы должны рассматривать перенаправление на стороне клиента для поведения входа в систему какособенность качества жизни.Конечные точки данных на вашем сервере по-прежнему будут защищены - это означает, что теоретически не прошедший проверку подлинности пользователь может копировать статический HTML, который ему обслуживают, и извлекать макеты страниц и шаблоны - но это было бы бессмысленно без данных для их заполнения - что являетсязащищенная часть.
На практике ваш конечный продукт будет представлять собой одностраничное приложение, которое отправляет запросы различным конечным точкам API для получения данных и заполнения запрошенных шаблонов страниц.Вам даже не нужно было бы заходить так далеко, чтобы хранить сложные состояния сеанса - достаточно простого флага, уведомляющего клиента о том, аутентифицирован он или нет (это выходит за рамки того, что вы обычно используете для аутентификации на стороне сервера, такой как куки или токены)
Теперь давайте предположим, что я - злонамеренный пользователь, у которого нет ничего хорошего - я мог бы «подделать» - или просто открыть инструменты разработчика браузера и установить флаг isAuthenticated в true, позволяя мне пропустить экран входа в систему.- что теперь я буду делать?Теоретически я мог бы перейти к my-service / super-secret без локального перенаправления обратно на страницу входа на стороне клиента - и затем, как только соответствующая страница попытается загрузить данные с сервера с несуществующими учетными данными, произойдет сбой -в лучшем случае выводится сообщение об ошибке, в худшем - с некоторым внутренним исключением, а в представлении отображается поврежденный шаблон.
Итак, коротко подчеркну:
A.Если вы хотите защитить свой ШАБЛОН , то достичь этого клиента невозможно.
B.Если вы хотите защитить свои ДАННЫЕ , то вы должны рассматривать или запрещать пользователям переходить на защищенные страницы как функцию качества жизни, а не функцию безопасности, поскольку она будет реализована на сервере при обслуживании.данные для этой конкретной страницы.