@architawr
"Ok, Google" и все твои проблемы решены

Где размещать логику «протухания» токена?

Здравствуйте, есть
vuex action для логина
login: ({ commit, dispatch }, data) =>
    new Promise((resolve, reject) => {
      apiClient
        .post('/auth', data)
        .then(resp => {
          const { access_token: token, expiryDate } = resp.data;

          localStorage.setItem('access_token', token);

          apiClient.defaultConfig.headers.Authorization = `Bearer ${token}`;

          commit('login', token);

          dispatch('getUserInfo');
          .....

          resolve(resp);
        })
        .catch(err => {
          localStorage.removeItem('access_token');
          console.error(err);
          reject(err);
        });
    })


аргумент data в action

{
  login: String,
  password: String,
  remember: Boolean
}


Если в action передался remember === true, то токен нужно сохранять до логаута

resp.data
{
  access_token: ...,
  expiryDate: YYYY-MM-DD hh:ii:ss
}


Я никак не решу, где лучше разместить логику проверки токена на протухание с чем то вроде
if (new Date(expiryDate) >= new Date()) удалить токен...
  • Вопрос задан
  • 506 просмотров
Решения вопроса 1
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
Я немного не понимаю зачем это делать на стороне FE? Время жизни токена пусть знает BE, он и сообщит о факте протухания при запросе. Вам дали токен, вы его запомнили и используете. Если при запросе сервер вернул статус-код о протухшем токене, то лишь тогда делаете запрос на регенерацию токена или на повторную авторизацию, в зависимости от особенностей проекта.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы