написан, на фронте авторизация происходит через access и refresh-токены, access зашит в localStorage, refresh зашит в cookie {onlyHtpp, safe).
теперь вопрос - по сути, надо сделать так, чтобы чувак без авторизации не мог видеть страницу, на которую ему нельзя попасть.
по классике, сначала страница загружается и уже после document.ready мы сыплем запросы к бекенду с тем, чтобы он отдал нам набор данных для рендеринга на страницу.
таким образом, в ответе может прийти 401.
но страница частично с оформлением и прочими элементами уже загрузится.
по идее, обеспечить загрузку содержимого до загрузки js невозможно, ибо accessToken из соображения безопасности зашит в localStorage.
тут я вижу 2 пути:
1) делать предварительный запрос, если авторизации нет - кидать на страницу авторизации, если есть - допускать загрузку страницы и уже слать остальные.
откровенно мне это не нравится, во-первых, в два раза больше запросов, во-вторых, при следующем запросе также мы делаем проверку, то есть и запросов и проверок 2
2) не допускать какими-то средствами (какими?) загрузки страницы до того, пока не отправится запрос.
но тут тоже есть подводные камни - есть страницы, на которых просто какая-то форма без подгрузки содержимого с бекенда, взаимодействие с серваком должно произойти только в момент событий, клика на ссылку, отправки формы и т.д.
то есть в таком случае мы вообще не способны понять, можно ли страницу рендерить или нет.
как тут лучше реализовать запрет на просмотр страниц?..
Поэтому в реакте можно использовать Guard на роутах
Обсуждают сегодня