Кратко опишу проблему.
Есть SPA, допустим сайт для просмотра фотографий. Все данные берутся из API. Получение фотографий из API доступно без авторизации. Вот мы получили изображения, отрисовали их на странице, все ок.
Но вот потребовалась возможность добавлять фотографии в "избранные". Для добавления в "избранное" нужна авторизация, так как избранные изображения хранятся на бэкенде.
Акцентирую внимание - получение фото без авторизации, добавление в избранное с авторизацией.
Добавили авторизацию. Посылаем - логин, пароль, получаем токен авторизации, сохраняем токен в localStorage (далее будем посылать его в заголовках) Теперь что бы добавить изображение в избранное, посылаем PUT на на нужный адрес.
Теперь проблема.
Для добавления в избранное - нужна кнопка "Добавить в избранное", и есть такой маленький нюанс, показывать эту кнопку нужно только авторизованным юзерам! Без проблем, напишем функцию isLogged() - которая проверяет авторизован ли юзер. И на её основе будем показывать или не показывать кнопку "Добавить в избранное"
Вопрос! А что именно должна делать эта функция - isLogged()?
Так как же нужно делать? Ведь я не первый кто столкнулся с этой проблемой.
Может быть, это и не целое готовое решение, но вот несколько советов по теме:
1) У токена обычно есть время жизни, которое можно учитывать при сохранении и повторном запросе;
2) Ваше приложение, скорее всего, реактивно - тогда можно отслеживать изменение токена в ответах сервера. Если пользователь нажал на кнопку, а сервер токен не принял - кнопка пропала, появилось предупреждение.
3) Можно при каждом обращении к серверу регенерировать токен, увеличивая тем самым его время жизни.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пишу программу для управления умным домом
Задача программно сгенирировать документ Word, а именно договорДля договора есть определенные правила того что если заголовок начинается...
Такой вот вопрос, может есть тут разработчики, которые подскажут, как можно выйти с такой ситуации