Size: a a a

JavaScript.Ninja

2021 May 17

AI

Arthur Irgashev in JavaScript.Ninja
а, ну тогда вон всё, что выше описал, к тебе применимо
источник

AI

Arthur Irgashev in JavaScript.Ninja
аналогично, кстати, для защищённых страниц. делаешь такой же роут, при переходе на защищённую страницу проверяшь стейт. Если не авторизован, то редирект на /login
источник

А

Александр Сергеевич... in JavaScript.Ninja
Я так и думал добавить еще один стейт который бы отражал состояние аутентификации
источник

А

Александр Сергеевич... in JavaScript.Ninja
Я сейчас это проверяю обращением к бэку, у меня авторизация по сессии
источник

AI

Arthur Irgashev in JavaScript.Ninja
ну а можно сделать это один раз при старте приложения
источник

AI

Arthur Irgashev in JavaScript.Ninja
тебе ведь смысла нет каждый раз слать запрос с фронта по факту
источник

А

Александр Сергеевич... in JavaScript.Ninja
А если сессия протухнет
источник

AI

Arthur Irgashev in JavaScript.Ninja
тебе апишка вернёт 401 / 403 и ты сможешь обработать это на клиенте, сделав редирект на логин или ещё что-то
источник

AI

Arthur Irgashev in JavaScript.Ninja
или делай sliding expiration у сессии
источник

AI

Arthur Irgashev in JavaScript.Ninja
чтобы при запросе она перезаписывалась и рефрешилась
источник

А

Александр Сергеевич... in JavaScript.Ninja
Ну да можно в catch ее перезаписать
источник

А

Александр Сергеевич... in JavaScript.Ninja
Ещё такая ситуация интересная если в случае допустим пользователь заполняет какую-то форму в это время истекает сессия, форму заполнил её отправил но она не принялась из-за того что сессия уже испекла
источник

D

Dymon in JavaScript.Ninja
лучше ловить такие ошибки глобально
axios.interceptors.response.use(response => {
 return response.data;
}, error => {
if (error.response && error.response.data) {
 // handle your errors here.
 handleServerErrors(error.response.data);
}
return Promise.reject(error);
});
источник

AI

Arthur Irgashev in JavaScript.Ninja
ну тут можно по-разному реализовывать. если делать плавающую сессию, то такой проблемы скорее всего не будет, т.к. она будет постоянно обновляться

если ошибка вылетает, то всё зависит от того, что тебе скажет бизнес. можно под капотом ловить 401 ошибку и отправлять запрос на рефреш сессии, после чего делать отправку формы (всё это без участия юзера, для него просто крутится прелоадер какой-то), или же делать редирект на логин
источник

А

Александр Сергеевич... in JavaScript.Ninja
Да такой вариант тоже поподался еще не вник в него
источник

А

Александр Сергеевич... in JavaScript.Ninja
Да вот хорошо бы постоянно рефрешить сессию но она должна истекать через час при отсутствии активности пользователя
источник

AI

Arthur Irgashev in JavaScript.Ninja
ну, как я уже сказал, всё зависит от требований бизнеса. можно сохранить стейт формы, сделать редирект на логин, после логина обратно на форму и восстановить стейт
источник

AI

Arthur Irgashev in JavaScript.Ninja
в итоге юзер ничего не потерят
источник

AI

Arthur Irgashev in JavaScript.Ninja
ну и в случае экспайринга сессии показывать сообщение, типа "сессия проекспайрилась, авторизуйтесь, после чего вы автоматически будете возвращены на страницу ..... данные не потеряются"
источник

А

Александр Сергеевич... in JavaScript.Ninja
Хороший вариант
источник