Впервые дошел до авторизации на React. Подскажите, пожалуйста, как это должно быть организовано. Пользуюсь openAPI вконтакте. Я создал компонент для UserBox панели где есть кнопка "Войти через вк", По нажатию нее в actionCreator делаю запрос функцией VK.Auth.login, получаю ответ, записываю данные в стор и рендерю их в компоненте UserBox. Как держать сессию, нужно при каждом рендере основного компонента или раута постоянно отправлять запрос и проверять залогинен или нет, или как такой процесс вообще должен быть организован?
Есть метод VK.Auth.getLoginStatus, которым можно проверить сессию. Вот я только не понимаю, как это организовать.
Когда его вызывать, как проверять сессию. При перезагрузке страницы и при переходе по раутам.
Очень частый вопрос.
По факту контакт все вопросы по авторизации берет на себя. Вам стоит только отправлять запросы и правильно обрабатывать ответы.
Если по шагам:
1) Вы авторизовались - сохранили токен в локальный стор редакса (или в глобальный стейт контекст если без редакса)
2) Далее при каждом последующем запросе отправляйте токен.
3) Если сервер вернет вам ошибку связанную с невалидностью токена, то делайте снова авторизацию, либо ошибку.
У меня нет токена, но это open api, как я понял, там он и не нужен. Есть уже готовый метод проверки статуса VK.Auth.getLoginStatus.
Допустим, я перезагружаю страницу, тогда мне нужно в методе жизненного цикла, при перед рендером компонента отправить запрос, на проверку статуса, и если я авторизован, вывести данные. Я правильно понял?
Сергей Сунцев, Понял, спасибо большое. Я просто этого не понимал. Получается, я не только при нажатии кнопки авторизоваться буду тянуть данные, но и перед или при рендере компонента, чтобы узнать, авторизован я в вк или нет, и если да, то рендерить кнопку, а если нет, то рендерить кнопку с логаутом и данными пользователя. Ну и остальную информацию относительно этой. и при любом запросе, допустим фотографий, я должен спросить, пользователь сейчас залогинен в вк, если да, то я могу ему выдать информацию, если нет, то ошибка.